Windows 8自动旋转注册表值

Windows 8 AutoRotation registry value

本文关键字:注册表 旋转 Windows      更新时间:2023-10-16

我们正在尝试确定当前是否从c++应用程序启用或禁用了自动旋转。以下代码始终返回值1,即使相同键的regedit显示为0。如果应用程序以标准用户或管理员身份运行,则返回相同的结果。

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

Hans Passant的评论提供了答案"Regedit可能找错了密钥。请在64位操作系统上导航到SOFTWARE\Wow6432Node\Microsoft…。这是32位程序读取密钥的主页。"我们需要在注册表函数调用中包含KEY_WOW64_64KEY标志。感谢