TIME2026-04-05 04:06:45

Twitter 接码网[Q870]

搜索
热点
新闻分类
友情链接
首页 > 资讯 > c#操作注册表
资讯
c#操作注册表
2026-02-17IP属地 美国0

在C中操作注册表可以通过使用内置的Microsoft.Win32.Registry类来完成。这个类提供了访问Windows注册表的机制。以下是一些基本的操作注册表的示例代码。请注意,修改注册表通常需要管理员权限,否则可能会遇到访问被拒绝的错误。

添加键值对到注册表

using Microsoft.Win32;
public void SetRegistryValue(string subKey, string keyValueName, string value)
{
    RegistryKey regKey = Registry.CurrentUser.OpenSubKey(subKey, true); // true表示需要写入权限
    regKey?.SetValue(keyValueName, value); // 设置键值对
    regKey?.Close(); // 关闭注册表键
}

在这个例子中,我们打开当前用户的注册表子键(例如HKEY_CURRENT_USERSoftware),然后在这个子键下添加一个新的键值对,注意,如果子键不存在,OpenSubKey 方法会返回 null,所以在调用SetValue 之前需要检查返回值是否为 null。

c#操作注册表

读取注册表中的值

using Microsoft.Win32;
public string GetRegistryValue(string subKey, string keyValueName)
{
    RegistryKey regKey = Registry.CurrentUser.OpenSubKey(subKey); // 只读模式打开子键,不需要写入权限
    object value = regKey?.GetValue(keyValueName); // 获取键值对应的值
    return value?.ToString(); // 返回字符串形式的值,如果值为null则返回空字符串
}

在这个例子中,我们从注册表中读取一个已存在的键值对应的值,注意,GetValue 方法返回的是一个object 类型,所以我们需要将其转换为字符串,如果值为 null,则返回空字符串,如果键值不存在,则GetValue 方法会返回 null,在调用ToString() 之前需要检查返回值是否为 null。

删除注册表中的键值对

删除注册表中的键值对需要谨慎操作,因为这可能会影响到系统的功能,只有在确定需要删除某个键值对的情况下才进行此操作,以下是删除键值对的示例代码:

using Microsoft.Win32;
public void DeleteRegistryValue(string subKey, string keyValueName)
{
    RegistryKey regKey = Registry.CurrentUser.OpenSubKey(subKey, true); // 以写入模式打开子键以删除键值对
    regKey?.DeleteValue(keyValueName); // 删除指定的键值对
    regKey?.Close(); // 关闭注册表键
}

这些操作都需要管理员权限,否则可能会遇到权限不足的问题,修改注册表可能会对系统产生影响,所以在修改之前请确保你了解这些操作的后果,在生产环境中操作注册表时,请务必谨慎行事并充分测试你的代码。