public void Dispose()
 {
     if (RegistryKey != null)
     {
         RegistryKey.Close();
         RegistryKey.Dispose();
         RegistryKey = null;
     }
     WrappedRegistry.Remove(this);
 }
Esempio n. 2
0
        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);
 }