public string [] GetSubKeyNames (RegistryKey rkey)
{
IntPtr handle = GetHandle (rkey);
StringBuilder buffer = new StringBuilder (BufferMaxLength);
ArrayList keys = new ArrayList ();
for (int index = 0; true; index ++) {
int result = RegEnumKey (handle, index, buffer, buffer.Capacity);
if (result == Win32ResultCode.Success) {
keys.Add (buffer.ToString ());
buffer.Length = 0;
continue;
}
if (result == Win32ResultCode.NoMoreEntries)
break;
// should not be here!
GenerateException (result);
}
return (string []) keys.ToArray (typeof(String));
}