<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0-preview.3.20214.6" />

Registry

public static class Registry
using System; namespace Microsoft.Win32 { public static class Registry { public static readonly RegistryKey CurrentUser = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default); public static readonly RegistryKey LocalMachine = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default); public static readonly RegistryKey ClassesRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Default); public static readonly RegistryKey Users = RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Default); public static readonly RegistryKey PerformanceData = RegistryKey.OpenBaseKey(RegistryHive.PerformanceData, RegistryView.Default); public static readonly RegistryKey CurrentConfig = RegistryKey.OpenBaseKey(RegistryHive.CurrentConfig, RegistryView.Default); public static object GetValue(string keyName, string valueName, object defaultValue) { string subKeyName; RegistryKey baseKeyFromKeyName = GetBaseKeyFromKeyName(keyName, out subKeyName); using (RegistryKey registryKey = baseKeyFromKeyName.OpenSubKey(subKeyName)) return registryKey?.GetValue(valueName, defaultValue); } public static void SetValue(string keyName, string valueName, object value) { SetValue(keyName, valueName, value, RegistryValueKind.Unknown); } public static void SetValue(string keyName, string valueName, object value, RegistryValueKind valueKind) { string subKeyName; RegistryKey baseKeyFromKeyName = GetBaseKeyFromKeyName(keyName, out subKeyName); using (RegistryKey registryKey = baseKeyFromKeyName.CreateSubKey(subKeyName)) registryKey.SetValue(valueName, value, valueKind); } private static RegistryKey GetBaseKeyFromKeyName(string keyName, out string subKeyName) { if (keyName == null) throw new ArgumentNullException("keyName"); int num = keyName.IndexOf('\\'); string text = (num != -1) ? keyName.Substring(0, num).ToUpperInvariant() : keyName.ToUpperInvariant(); RegistryKey result; switch (text) { case "HKEY_CURRENT_USER": result = CurrentUser; break; case "HKEY_LOCAL_MACHINE": result = LocalMachine; break; case "HKEY_CLASSES_ROOT": result = ClassesRoot; break; case "HKEY_USERS": result = Users; break; case "HKEY_PERFORMANCE_DATA": result = PerformanceData; break; case "HKEY_CURRENT_CONFIG": result = CurrentConfig; break; default: throw new ArgumentException(System.SR.Format(System.SR.Arg_RegInvalidKeyName, "keyName"), "keyName"); } subKeyName = ((num == -1 || num == keyName.Length) ? string.Empty : keyName.Substring(num + 1, keyName.Length - num - 1)); return result; } } }