private RegistryKey CreateSubKey(RegistryKey rkey, string keyname, bool writable, bool is_volatile)
{
KeyHandler self = KeyHandler.Lookup(rkey, true);
if (self == null)
{
throw RegistryKey.CreateMarkedForDeletionException();
}
if (KeyHandler.VolatileKeyExists(self.Dir) && !is_volatile)
{
throw new IOException("Cannot create a non volatile subkey under a volatile key.");
}
return(self.Ensure(rkey, ToUnix(keyname), writable, is_volatile));
}