private RegistryKey CreateSubKey(RegistryKey rkey, string keyname, bool writable) { KeyHandler keyHandler = KeyHandler.Lookup(rkey, true); if (keyHandler == null) { throw RegistryKey.CreateMarkedForDeletionException(); } return(keyHandler.Ensure(rkey, UnixRegistryApi.ToUnix(keyname), writable)); }
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)); }