質問

こんにちは、firefox.exeへのパスを提供するレジストリ値を読み取ろうとしています。 これは下に保存されます

HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 3.0.10\bin

(バージョン番号は他の場所にあります)

しかし、RegOpenKeyExがERROR_SUCCESSを返すようにすることはできないようです

HKEY_LOCAL_MACHINE

したがって、このテストは失敗します:

if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("\\SOFTWARE"),0,KEY_QUERY_VALUE,&keyHandle) == ERROR_SUCCESS)

このテストに合格する間:

if(RegOpenKeyEx(HKEY_CLASSES_ROOT,TEXT("\\Shell"),0,KEY_QUERY_VALUE,&keyHandle) == ERROR_SUCCESS)
役に立ちましたか?

解決

次のコードは、「不正なパス」を意味するエラーコード161でマシンで失敗しました。 (winerror.hで調べてください):

long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"),
                      0,KEY_QUERY_VALUE, &hk );

次に、「ソフトウェア」を使用するようにRegOpenKeyExの呼び出しを変更しました。 (先頭にスラッシュがないことに注意してください)、それは機能しました:

#include <windows.h>
#include <iostream>
using namespace std; 

int main() {
    HKEY hk;

    // Notice that it's SOFTWARE instead of \\SOFTWARE:
    long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"),
                      0,KEY_QUERY_VALUE, &hk );
    if ( n == ERROR_SUCCESS ) {
        cout << "OK" << endl;
    }
    else {
        cout << "Failed with value " << n << endl;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top