注册表功能在肯定存在的键上返回“未找到”。我有正确的字符集并使用双反斜杠,所以这不是问题。

这是导出 key 的输出:

[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位。将build设置更改为64位可解决此问题。

最佳答案

也许您正在64位Windows OS上以32位进程运行?

09-12 16:42