using Microsoft.Win32; namespace SparkClient.Model.Helper; public static class RegistryHelper { private const string BaseRegistryKey = @"SOFTWARE\Dayu\Spark"; /// <summary> /// 向注册表写入字符串类型值 /// </summary> /// <param name="keyName">存储的键名</param> /// <param name="value">要写入的字符串值</param> public static void WriteString(string keyName, string value) { using (var key = Registry.CurrentUser.CreateSubKey(BaseRegistryKey)) { key?.SetValue(keyName, value, RegistryValueKind.String); } } /// <summary> /// 从注册表读取字符串类型值 /// </summary> /// <param name="keyName">存储的键名</param> /// <returns>读取到的字符串值,若不存在则返回 null</returns> public static string ReadString(string keyName) { using (var key = Registry.CurrentUser.OpenSubKey(BaseRegistryKey)) { if (key == null) return null; return key.GetValue(keyName) as string; } } /// <summary> /// 向注册表写入布尔类型值(以 0/1 方式) /// </summary> public static void WriteBool(string keyName, bool value) { using (var key = Registry.CurrentUser.CreateSubKey(BaseRegistryKey)) { key?.SetValue(keyName, value ? 1 : 0, RegistryValueKind.DWord); } } /// <summary> /// 从注册表读取布尔类型值(从 0/1 转换) /// </summary> public static bool ReadBool(string keyName, bool defaultValue = false) { using (var key = Registry.CurrentUser.OpenSubKey(BaseRegistryKey)) { if (key == null) return defaultValue; object regValue = key.GetValue(keyName); if (regValue == null) return defaultValue; int intVal; if (int.TryParse(regValue.ToString(), out intVal)) { return intVal != 0; // 1->true, 0->false } return defaultValue; } } /// <summary> /// 删除某个键值 /// </summary> /// <param name="keyName">要删除的键名</param> public static void DeleteKey(string keyName) { using (var key = Registry.CurrentUser.OpenSubKey(BaseRegistryKey, writable: true)) { if (key != null) { key.DeleteValue(keyName, throwOnMissingValue: false); } } } }