This documentation is archived and is not being maintained.

RegistryKey.GetSubKeyNames Method

Retrieves an array of strings that contains all the subkey names.

[Visual Basic]
Public Function GetSubKeyNames() As String()
public string[] GetSubKeyNames();
public: String* GetSubKeyNames()  __gc[];
public function GetSubKeyNames() : String[];

Return Value

An array of strings that contains the names of the subkeys for the current key.


Exception Type Condition
SecurityException The user does not have RegistryPermission.SetInclude(read, currentKey) access.
ObjectDisposedException The RegistryKey being manipulated is closed (closed keys cannot be accessed).


This method does not recursively find names. It returns the names on the base level it was called from.


[Visual Basic, C#, C++] This code example is part of a larger example provided for the RegistryKey class.

[Visual Basic] 
' Print the information from the Test9999 subkey.
Console.WriteLine("There are {0} subkeys under Test9999.", _
For Each subKeyName As String In test9999.GetSubKeyNames()
    Dim tempKey As RegistryKey = _
    Console.WriteLine(vbCrLf & "There are {0} values for " & _
        "{1}.", tempKey.ValueCount.ToString(), tempKey.Name)
    For Each valueName As String In tempKey.GetValueNames()
        Console.WriteLine("{0,-8}: {1}", valueName, _

// Print the information from the Test9999 subkey.
Console.WriteLine("There are {0} subkeys under {1}.", 
    test9999.SubKeyCount.ToString(), test9999.Name);
foreach(string subKeyName in test9999.GetSubKeyNames())
        tempKey = test9999.OpenSubKey(subKeyName))
        Console.WriteLine("\nThere are {0} values for {1}.", 
            tempKey.ValueCount.ToString(), tempKey.Name);
        foreach(string valueName in tempKey.GetValueNames())
            Console.WriteLine("{0,-8}: {1}", valueName, 

// Print the information from the Test9999 subkey.
Console::WriteLine(S"There are {0} subkeys under Test9999.", 
String* subKeyNames __gc [] = test9999->GetSubKeyNames();
for(int i =0; i < subKeyNames->Length; i++)
    RegistryKey* tempKey = test9999->OpenSubKey(subKeyNames[i]);
    Console::WriteLine(S"\nThere are {0} values for {1}.", 
        tempKey->ValueCount.ToString(), tempKey->Name);
    String* valueNames __gc [] = tempKey->GetValueNames();
    for(int j = 0; j < valueNames->Length; j++)
        Console::WriteLine(S"{0,-8}: {1}", valueNames[j], 

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.


Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

.NET Framework Security: 

See Also

RegistryKey Class | RegistryKey Members | Microsoft.Win32 Namespace | SubKeyCount | GetValueNames