9

レジストリ関数は、確かに存在するキーに対して「見つかりません」を返しています。私は正しい文字セットを持っていて、二重のバックスラッシュを使用しているので、それは問題ではありません。

キーのエクスポートからの出力は次のとおりです。

[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 ビットに変更すると、問題が修正されました。

4

2 に答える 2

6

64 ビット Windows OS で 32 ビット プロセスとして実行している可能性がありますか?

于 2012-06-21T04:19:29.157 に答える