信息发布→ 登录 注册 退出

.NET Core 操作 Windows 注册表

发布时间:2025-07-17

点击量:

一.组件安装

Windows 注册表操作是特定于 Windows 平台的,不适用于其他操作系统。

由于操作注册表功能未包含在基础类库(BCL)中,需要通过 NuGet 包来安装。使用以下命令进行安装:

dotnet add package Microsoft.Win32.Registry

二.检查操作系统

由于注册表操作仅限于 Windows 平台运行,因此建议在执行代码前先检测操作系统类型。

if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)){
    Error("此应用只能在 Windows 系统上运行。");
    Environment.Exit(-1);
}

三.管理员权限

注册表根目录包含五项,其中操作 HKEY_CURRENT_USER 不需要管理员权限,但操作其他根目录则需要。

从 NuGet 安装 System.Security.Principal.Windows 包。

使用以下代码判断程序是否已以管理员权限运行:

using var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
var isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
if (!isElevated){
    Error("需要管理员权限来运行此程序。");
    Environment.Exit(-1);
}

四.注册表操作

对注册表的操作主要依赖于 Registry 类型,该类型包含几个属性,分别对应上面提到的注册表根目录的五项。例如,Registry.CurrentUser 对应 HKEY_CURRENT_USER

在编写代码之前,值得了解的是,注册表在代码中的对应术语:

打开指定的注册表 Key:

var key = Registry.CurrentUser.OpenSubKey("", true);

读取 Key 下的值:

// 首先获取 ValueName
var keyNames = key.GetValueNames();
if (!keyNames.Any()){
    Success("未找到记录,无需清除。");
    return;
}
foreach (var name in keyNames){
    // 获取值
    key.GetValue(name);
    // 删除值
    key.DeleteValue(name);
}

获取 Key 下的子 Key:

var subKeyNames = key.GetSubKeyNames();
if (subKeyNames.Any()){
    foreach (var name in subKeyNames)
    {
        // 删除子 Key
        serverKey.DeleteSubKey(name);
    }
}

添加或修改值:

key.SetValue("valuename", "value");

添加子 Key:

key.CreateSubKey("subkeyname");
标签:# windows  # 操作系统  # 注册表  # 五项  # 的是  # 几个  # 不需要  # 前先  # 未找到  # 则需  # 类库  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!