2013-02-07 112 views
0

我們正試圖確定自動旋轉當前是否在我們的C++應用程序中啓用或禁用。即使同一個鍵的註冊表顯示爲0,以下代碼始終返回值1.如果應用程序以標準用戶或管理員身份運行,它將返回相同值。Windows 8 AutoRotation註冊表值

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); 
} 
+0

也許我沒有跟着你,但它看起來像檢查lRes的值,就好像它是從「啓用」註冊表值中的數據? lRes只是操作的狀態碼(例如,試圖讀取值是否成功?)。你的數據應該在dwRegValue中。 – Matthew

+0

不,我們只是檢查lRes成功註冊表函數調用 dwRegValue總是1.我編輯的帖子,使這個更清晰 – PhilC

+0

啊,你的額外評論清除了我。 – Matthew

回答

0

漢斯帕桑特的評論給出了答案 「你可能尋找與註冊表編輯器錯鍵導航到SOFTWARE \ Wow6432Node \微軟...而不是一個64位操作系統上,這是家裏的鑰匙通過32位程序讀取。「 我們需要在我們的註冊表函數調用中包含KEY_WOW64_64KEY標誌。 謝謝