我们正在尝试确定当前是否在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);
}发布于 2013-02-11 21:46:12
Hans Passant的评论提供了答案:“您可能使用Regedit查看了错误的密钥。导航到SOFTWARE\Wow6432Node\Microsoft...而不是在64位操作系统上。这是32位程序读取密钥的位置。”我们需要在注册表函数调用中包含KEY_WOW64_64KEY标志。谢谢
https://stackoverflow.com/questions/14759020
复制相似问题