0

自動回転が現在有効になっているか、C++ アプリケーションから無効になっているかを判断しようとしています。次のコードは、同じキーの regedit が 0 を示していても、常に 1 の値を返します。アプリケーションが標準ユーザーまたは管理者として実行されている場合は、同じ値を返します。

HKEY hkMain;
LONG lRes =  RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\AutoRotation",0,KEY_QUERY_VALUE,&hkMain);
if (lRes==ERROR_SUCCESS) {
    DWORD dwRegValue=0,dwSize=0,dwType=0;
    dwSize = sizeof(DWORD);
    lRes = RegQueryValueEx(hkMain,TEXT("Enable"),NULL,&dwType,(LPBYTE)&dwRegValue,&dwSize);

    if (lRes==ERROR_SUCCESS) {
        // dwRegValue value is always 1
    }
    RegCloseKey(hkMain);
}
4

1 に答える 1

0

Hans Passant のコメントは、「おそらく Regedit で間違ったキーを見ているのでしょう。64 ビット オペレーティング システムではなく、SOFTWARE\Wow6432Node\Microsoft に移動してください。32 ビット プログラムによって読み取られるキーのホームです。」レジストリ関数呼び出しに KEY_WOW64_64KEY フラグを含める必要がありました。ありがとうございました

于 2013-02-11T13:46:12.200 に答える