public void Dispose() { if (RegistryKey != null) { RegistryKey.Close(); RegistryKey.Dispose(); RegistryKey = null; } WrappedRegistry.Remove(this); }
public void Dispose() { var before = WrappedRegistry.Keys.ToList(); WrappedRegistry.Clear(); var after = WrappedRegistry.Keys.ToList(); if (RegistryKey != null) { ConsoleLog.WriteLine($"Closing and disposing RegistryKey"); RegistryKey.Dispose(); RegistryKey = null; } if (_loaded) { _loaded = false; ConsoleLog.WriteLine($"Unloading registry hive {FilePath}"); AdjustPrivileges(); var result = RegUnLoadKey(HKEY_USERS, Name); if (result != ERROR_SUCCESS) { ConsoleLog.WriteLine(); ConsoleLog.WriteLine($"Failed to unload registry hive"); using (ConsoleLog.Indent()) { ConsoleLog.WriteLine($"Hive file: {FilePath}"); ConsoleLog.WriteLine($"Error code: {result} (0X{result:X})"); ConsoleLog.WriteLine($"This can prevent the version of Visual Studio, that uses the hive, from starting"); ConsoleLog.WriteLine($"To resolve this, do the following:"); using (ConsoleLog.Indent()) { ConsoleLog.WriteLine($"Start RegEdit.exe"); ConsoleLog.WriteLine($@"Select the key [{RegistryKeyPath}]"); //ConsoleLog.WriteLine($@"Select the key [Computer\HKEY_USERS\{Name}]"); ConsoleLog.WriteLine($"Choose [Unload Hive...] from the file menu"); } } ConsoleLog.WriteLine(); } } }
private WrappedRegistryKey(RegistryKey registryKey) { RegistryKey = registryKey; WrappedRegistry.Add(this); }