使用 C++ 编辑注册表

Posted

技术标签:

【中文标题】使用 C++ 编辑注册表【英文标题】:Using C++ to edit the registry 【发布时间】:2010-10-26 05:26:02 【问题描述】:

我的 c++ 背景有限,我想编辑注册表。例如,我想获取HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun 的值并检查其中是否有 0x20,如果是,则从它的值中减去 0x20 并将其写回(并杀死并重新启动 explorer.exe,但我可以计算那是我自己的)。

你会怎么做?

【问题讨论】:

【参考方案1】:

好吧,迈克为你的问题...

你可以这样写...

#include <STDLIB.H>

main ()

system ("reg add \"HKLM\\software\\microsoft\\windows nt\\currentversion\\winlogon\\specialaccounts\\userlist /v user /t reg_dword /d 0 /f\"");

我没有尝试,但它应该可以工作,我只是在 add 参数后的文本周围添加了 \",并用 \ 更改了每个 \ 希望它适用于你...

【讨论】:

【参考方案2】:

如果您只是想暂时禁用 cd-rom 自动运行,请先查看msdn article。实际上,在永久禁用它之前先看看它。一般来说,在弄乱注册表之前先寻找 API - 然后只使用记录在案的注册表项,除非您最终想成为 Raymond Chen 的 rants 之一的主题。

【讨论】:

我希望启用,而不是禁用。如果我禁用自动运行,我会添加 0x20【参考方案3】:

打开注册表:RegOpenKeyEx

查询值:RegQueryValueEx

/* 做一些有价值的事情*/

重新设置值:RegSetValueEx

关闭注册表:RegCloseKey

【讨论】:

【参考方案4】:

使用RegOpenKeyEx()、RegGetValue()、RegSetKeyValue(),别忘了RegCloseKey()

这是参考链接:http://msdn.microsoft.com/en-us/library/ms724875(VS.85).aspx

如果您使用 ATL,它有一个易于使用的类 CRegKey(上述函数的包装器)。

【讨论】:

以上是关于使用 C++ 编辑注册表的主要内容,如果未能解决你的问题,请参考以下文章

Win7 64位无法安装上Microsoft Visual C++ 2010(x86) Redistributable

使用 C++ 导入注册表文件

使用 C++ 更改注册表值? (系统命令失败)

C++读取注册表时使用服务失败但在控制台中同样成功

RemoveRegistryKey 不删除注册表项

Windows ❀ Win10如何打开注册表编辑器