OpenSubKey Method (String)

RegistryKey.OpenSubKey Method (String)


Retrieves a subkey as read-only.

Namespace:   Microsoft.Win32
Assembly:  mscorlib (in mscorlib.dll)

public RegistryKey OpenSubKey(
	string name


Type: System.String

The name or path of the subkey to open as read-only.

Return Value

Type: Microsoft.Win32.RegistryKey

The subkey requested, or null if the operation failed.

Exception Condition

name is null


The RegistryKey is closed (closed keys cannot be accessed).


The user does not have the permissions required to read the registry key.

You must open a key before it can be manipulated with other methods and properties. To modify a key, you must open it with an overload of the OpenSubKey method that allows you to specify write access, such as the OpenSubKey(String, RegistryKeyPermissionCheck) overload or the OpenSubKey(String, Boolean) overload.

If the specified subkey cannot be found, then null is returned.

In order to use the OpenSubKey method, you must have an instance of RegistryKey. To get an instance of RegistryKey, use the one of the static members of the Registry class.

The following code example creates a test key and uses the OpenSubKey method to open it, demonstrating both overloads of the method.

using System;
using Microsoft.Win32;
using Microsoft.VisualBasic;

public class Example
    public static void Main()
        // Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistryOpenSubKeyExample", false);
        RegistryKey rk = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample");

        // Obtain an instance of RegistryKey for the CurrentUser registry 
        // root. 
        RegistryKey rkCurrentUser = Registry.CurrentUser;

        // Obtain the test key (read-only) and display it.
        RegistryKey rkTest = rkCurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);

        // Obtain the test key in one step, using the CurrentUser registry 
        // root.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);

        // Open the test key in read/write mode.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample", true);
        rkTest.SetValue("TestName", "TestValue");
        Console.WriteLine("Test value for TestName: {0}", rkTest.GetValue("TestName"));
    } //Main
} //Example


for the ability to read the specified registry key. Associated enumeration: RegistryPermissionAccess.Read


for the ability to access the specified registry key if it is a remote key. Associated enumeration: SecurityPermissionFlag.UnmanagedCode

.NET Framework
Available since 1.1
Return to top
© 2016 Microsoft