This documentation is archived and is not being maintained.

RegistryKey.SubKeyCount Property

Retrieves the count of subkeys at the base level, for the current key.

[Visual Basic]
Public ReadOnly Property SubKeyCount As Integer
public int SubKeyCount {get;}
public: __property int get_SubKeyCount();
public function get SubKeyCount() : int;

Property Value

The number of subkeys for the current key.


Exception Type Condition
SecurityException The user does not have read permission for the key.
ObjectDisposedException The RegistryKey being manipulated is closed (closed keys cannot be accessed).


This property does not recursively count names. It only returns the count of names on the base level from which it was called.


[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 | GetSubKeyNames