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)); }