レジストリ関数は、確かに存在するキーに対して「見つかりません」を返しています。私は正しい文字セットを持っていて、二重のバックスラッシュを使用しているので、それは問題ではありません。
キーのエクスポートからの出力は次のとおりです。
[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 ビットに変更すると、問題が修正されました。