您的位置:首页 > 编程语言 > C语言/C++

VC++读取注册表失败之64位惹得祸

2016-01-06 19:26 239 查看
使用RegOpenKeyEx打开HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run  成功,RegQueryValueEx 失败。又随便换了几个位置的键读取,同样的代码有的成功,有的失败。逐一确认不知权限的问题。网上找了半天,原来是64位系统的注册表结构和32位略有不同。比如:32位  HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\64位 HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\路径被映射到wow6432node下,如果恰巧32位同路径下值相同,就可以顺利取到值。打开注册表编辑器互相比较一下,就很容易明白了。64位读取32位注册表路径要在RegOpenKeyEx时加上KEY_WOW64_64KEY参数。RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_QUERY_VALUE|KEY_WOW64_64KEY,&hkey)

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: