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

using Microsoft.Win32;
namespace BrilliantSightClient.Model.Helper;
public static class RegistryHelper
{
private const string BaseRegistryKey = @"SOFTWARE\Yueyang\BrilliantSight";
/// <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);
}
}
}
}