使用 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++ 编辑注册表的主要内容,如果未能解决你的问题,请参考以下文章