C# 安全导航到注册表路径

Posted

技术标签:

【中文标题】C# 安全导航到注册表路径【英文标题】:C# Safely Navigate to Registry Path 【发布时间】:2015-05-13 04:55:40 【问题描述】:

基本上我需要创建一个路径:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\myDomain\Subdomain

并创建一个名为 *(星号)的 DWORD,其值为 2 我在控制台运行时遇到错误,但它什么也没做。

我认为这是因为 myDomain\Subdomain 不存在。这是我的代码:

RegistryKey myKey = Registry.CurrentUser.OpenSubKey("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\google.com\\sites", true);
myKey.SetValue("*", "2", RegistryValueKind.DWord);
myKey.Close();

【问题讨论】:

你得到什么错误? app.exe @DWright 中出现了“System.NullReferenceException”类型的第一次机会异常 【参考方案1】:

CurrentUser 返回一个 RegistryKey。你想调用 CreateSubKey 。像这样,我认为:

RegistryKey myKey = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\google.com\\sites",true);

【讨论】:

【参考方案2】:

我想通了!我只是把我之前尝试过的东西复杂化了,解决方案如下:

RegistryKey myKey = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\google.com\\sites");
        myKey.SetValue("*", "2", RegistryValueKind.DWord);
        myKey.Close();

【讨论】:

以上是关于C# 安全导航到注册表路径的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 c# 将用户输入保存到注册表中?

如何在 C# 中获取已注册 COM 服务器的路径?

C# 将当前应用程序写入到注册表开机启动项中

使用 vb 或 c# 将项目添加到注册表中的键并获得管理访问权限

在 c# 中,如何测试/获取/设置可能存在或不存在的注册表项?

C# Winform打包部署时添加注册表信息实现开机启动.