首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么RegOpenKeyEx()在Vista64位上返回错误代码2?

为什么RegOpenKeyEx()在Vista64位上返回错误代码2?
EN

Stack Overflow用户
提问于 2008-10-31 00:58:25
回答 5查看 58K关注 0票数 32

我打了以下电话:

代码语言:javascript
复制
result = RegOpenKeyEx(key, s, 0, KEY_READ, &key);

(C++,Visual Studio5,Vista64位)。

即使"regedit“显示密钥存在,它也会失败,并返回错误代码2(”找不到文件“)。这段代码一直在32位XP上工作。为什么“找不到文件”,而它却清晰地存在?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-10-31 00:59:00

我发现我可以使用标志KEY_WOW64_64KEY来解决我的问题,如下所示:

代码语言:javascript
复制
result = RegOpenKeyEx(key, s, 0, KEY_READ|KEY_WOW64_64KEY, &key);

要获得完整的解释:32-bit and 64-bit Application Data in the Registry

票数 61
EN

Stack Overflow用户

发布于 2008-11-14 19:15:08

在Windows 64位系统上,注册表实际上分为两个部分。一部分由64位进程使用,另一部分由32位进程使用。

例如,如果一个32位应用程序以编程方式写入它认为是HKLM\SOFTWARE\Company\Application的内容,那么它实际上会被WOW64层重定向到HKLM\SOFTWARE\Wow6432Node\Company\Application.

因此,当您运行32位应用程序并调用RegOpenKeyEx时,它实际上针对的是Wow6432Node\文件夹,而不是regular \SOFTWARE节点。

票数 26
EN

Stack Overflow用户

发布于 2017-06-04 22:22:54

必须使用"Use Multi-Byte Character Set“进行编译或将字符串转换为(LPWSTR)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/252297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档