我打了以下电话:
result = RegOpenKeyEx(key, s, 0, KEY_READ, &key);(C++,Visual Studio5,Vista64位)。
即使"regedit“显示密钥存在,它也会失败,并返回错误代码2(”找不到文件“)。这段代码一直在32位XP上工作。为什么“找不到文件”,而它却清晰地存在?
发布于 2008-10-31 00:59:00
我发现我可以使用标志KEY_WOW64_64KEY来解决我的问题,如下所示:
result = RegOpenKeyEx(key, s, 0, KEY_READ|KEY_WOW64_64KEY, &key);要获得完整的解释:32-bit and 64-bit Application Data in the Registry
发布于 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节点。
发布于 2017-06-04 22:22:54
必须使用"Use Multi-Byte Character Set“进行编译或将字符串转换为(LPWSTR)
https://stackoverflow.com/questions/252297
复制相似问题