You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.7 KiB
81 lines
2.7 KiB
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); |
|
} |
|
} |
|
} |
|
|
|
} |