我正在尝试用 C++ 编写(我认为是)一个简单的脚本来搜索注册表(特别是 SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)并返回 DisplayName 值的值。
我已经浏览了 MSDN 文档,并在谷歌上搜索了数小时,不幸的是我被卡住了。
#define BUFFER 8192
char value[255];
DWORD BufferSize = BUFFER;
if(RegGetValue(HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"),
_T("DisplayName"),
RRF_RT_ANY,
NULL,
(PVOID)&value,
&BufferSize)
)
{
_tprintf(TEXT("(%d) %s - %s\n"), i+1, achKey, value);
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要能够将 achKey 附加到 RegGetValue 的第二个参数,以便在循环遍历每个子项时获取正确的值。
我已经尝试了一百万种不同的东西,不幸的是我在 C++ 方面的经验非常有限,而且我的谷歌技能显然也需要一些工作。
编辑:achKey 是密钥的名称:例如:NVIDIA 驱动程序
因此,附加时,第二个参数应为:
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\NVIDIA Drivers
Run Code Online (Sandbox Code Playgroud)
这是关于 RegGetValue 的 MSDN 参考:http : //msdn.microsoft.com/en-us/library/ms724868%28v=vs.85%29.aspx
我也尝试过类似的事情:
wcscat(_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"), achKey)
Run Code Online (Sandbox Code Playgroud)
它会编译,但是当运行时,它崩溃了。