public int SubKeyCount (RegistryKey rkey)
{
int index;
StringBuilder stringBuffer = new StringBuilder (BufferMaxLength);
IntPtr handle = GetHandle (rkey);
for (index = 0; true; index ++) {
int result = RegEnumKey (handle, index, stringBuffer,
stringBuffer.Capacity);
if (result == Win32ResultCode.MarkedForDeletion)
throw RegistryKey.CreateMarkedForDeletionException ();
if (result == Win32ResultCode.Success)
continue;
if (result == Win32ResultCode.NoMoreEntries)
break;
// something is wrong!!
GenerateException (result);
}
return index;
}