我该如何以编程方式更改Windows注册表中的值?

11
我需要以编程方式更改 \HKEY_CURRENT_USER\Software\Intuit\QBWebConnector 中找到的“Level”字符串为“Verbose”。最好的方法是什么?C#,批处理文件?我以前从未尝试过操作注册表...谢谢。
5个回答

7
如果你要更改的注册表项已经存在于注册表中,创建一个*.reg文件以按照你需要更改的注册表项最简单的方法如下:
  1. 打开Regedit
  2. 在左侧的树形视图中找到要更改的注册表键上面的注册表文件夹。
  3. 右键单击该文件夹并选择“导出”。
  4. 使用记事本打开刚刚导出的文件,并删除除第一行(“Windows Registry Editor Version 5.00”或类似内容)、文件夹名称(在你的情况下是[HKEY_CURRENT_USER\Software\Intuit\QBWebConnector])和你想要更改的键的名称值对之外的所有内容。
  5. 适当地编辑你想要更改的值并保存文件。在你的情况下,你应该得到以下*.reg文件:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Intuit\QBWebConnector]

"Level"="Verbose"

双击该文件并确认安全警告将在你的注册表上执行更改。

或者,在批处理文件中,你可以通过“REGEDIT /S pathname”静默导入注册表文件。

请小心操作注册表,否则可能会损坏你的Windows安装。


6
以下是一些未提到的更易操作的方法:
  1. Reg.exe add - 输入 reg /? 以查看选项,参见Reg 参考文献以获取详情。
  2. Regini.exe [脚本文件] - 比.reg文件更加强大,可以删除子键和数据项并设置权限。输入 regini /? 查看说明或参见MSDN文章分发注册表更改以获取详情。
  3. ATL::CRegKey类,SetStringValue() 成员,请参见MSDN.
  4. .NET Registry 类 SetValue() (C#, C++, F#, VB) - 请参见MSDN 参考文献
  5. Win32 APIs,例如 RegSetKeyValue()。请参见注册表函数参考。

2
实际上,改变一组注册表键的最简单方法是使用一个 *.reg 文件,然后将其加载到注册表中。但要小心:通常无法通过电子邮件向他人发送此类文件,因为它们会被许多邮件服务器过滤掉。
我们偶尔使用这种技术来传递应用程序配置并在其他计算机上测试它们。
我提到这个非编程解决方案,是因为您建议使用 C# 应用程序或批处理文件,这表明您正在寻找一些轻量级的东西,并且并不太担心细节。

1

你可以使用reg.exe在批处理文件中。


0
如果您想以编程方式编辑注册表文件,我认为最好的方法是使用C#!您可以使用以下代码添加、编辑或删除注册表键:

添加或编辑:

Registry.SetValue("HKEY_LOCAL_MACHINE\\" + keyPath , "KeyName", "KeyValue", RegistryValueKind.String);

删除:

using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var myKey = hklm.OpenSubKey(keyPath, true))
{
     if (myKey == null)
         MessageBox.Show("Register alredy deleted");
     else
     {
        myKey.DeleteValue("KeyName");
        myKey.Close();
        MessageBox.Show("Register deleted!");
      }
 }

重要提示:

您的应用程序必须以管理员身份运行! 为此,您可以向应用程序添加清单。

这是一个简单的编辑注册表文件的示例:

https://github.com/hgh6484/AddKeyToRegistry


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接