public RegistryKey OpenSubKey (RegistryKey rkey, string keyname, bool writable)
{
KeyHandler self = KeyHandler.Lookup (rkey, true);
if (self == null) {
// return null if parent is marked for deletion
return null;
}
RegistryKey result = self.Probe (rkey, ToUnix (keyname), writable);
if (result == null && IsWellKnownKey (rkey.Name, keyname)) {
// create the subkey even if its parent was opened read-only
result = CreateSubKey (rkey, keyname, writable);
}
return result;
}