注册表函数在确实存在的键上返回“未找到”。我有正确的字符集并使用双反斜杠,所以这不是问题。
这是导出密钥的输出:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Netmon3]
"NetmonVersion"="3.4.2350.0"
"NPLVersion"="03.02"
"InstallDir"="C:\\prog\\netmon3\\"
"NetmonEdition"="Capture and Parser Engine"
这是函数调用:
x = RegOpenKeyExA(
HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Netmon3",
0,
KEY_READ, &hKey);
返回值 x 为 2,表示ERROR_FILE_NOT_FOUND
。不过,简单地使用“ SOFTWARE\\Microsoft
”作为字符串可以正常工作。
调用 RegGetValue() 有同样的问题:
x = RegGetValueA(
HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Netmon3",
"InstallDir",
RRF_RT_ANY,
NULL,
(PVOID)install_directory,
&BufferSize
);
同样,我得到 2 作为结果,这意味着找不到。
我检查了它的权限,所有“用户”都有“读取”权限。
无论我错过了什么,都必须看到一些明显的东西,但是绞尽脑汁,我看不到它。
--
Marsh Ray 的答案如下:我在 64 位系统上编译 32 位,而 Netmon3 安装是 64 位的。将构建设置更改为 64 位解决了该问题。