我正在编写一个程序,查看注册表中的子项是否存在,如果不存在,它将创建一个具有值 (dword) 的子项。该程序正在创建以替换人们(非程序员)必须运行以执行 .reg 文件以执行我上面列出的内容的 .bat 文件,女巫对用户来说不是很有吸引力,这就是我制作这个程序的原因。
.reg 文件设置了我想设置为双字的键,但值的末尾有一个“c”(这就是它的样子):
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
"ScheduledInstallTime"=dword:0000000c
我的 C# 代码如下所示:
RegistryKey rk = Registry.LocalMachine.CreateSubKey(Globais.subkeyWU + @"\AU");
rk.SetValue("ScheduledInstallTime", 0000000c, RegistryValueKind.DWord);
问题是 .SetValue 函数不接受值末尾的 c,我的猜测是它只能是数字,因为它是一个 dwrod(不确定),所以,基本上,任何人都知道我该怎么做,做与 .reg 文件相同的事情吗?也许是十六进制值,我不知道如何用 C# 制作的东西...
无论如何,这是一个关于它在 regedit 中的外观的打印屏幕(.reg 文件执行此操作):
无论如何,谢谢!
最佳答案
看完我帖子里的评论后,我可以回答我自己的问题了!
我的问题的解决方案是:
rk.SetValue("ScheduledInstallTime", 0x0000000c, RegistryValueKind.DWord);
或
rk.SetValue("ScheduledInstallTime", 12, RegistryValueKind.DWord);
因为我试图在注册表中存储一个十六进制值,所以我要么将其转换为十进制,要么键入完整的十六进制值,就像我上面所做的那样。
感谢您的评论,真的让我明白并解决了我的问题!
关于C# 注册表子键双字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43204497/