Winapi 在32位应用程序上使用KEY_WOW64_64KEY的风险

Winapi 在32位应用程序上使用KEY_WOW64_64KEY的风险,winapi,Winapi,我们目前有一个32位的应用程序,需要在使用之前从注册表加载各种键/值对 在此之前,我们已经通过加载.reg作为安装的一部分完成了这项工作。在64位Windows上运行它,.reg组件最终位于64位存储中,但我们的32位应用程序位于32位存储中 我正在考虑使用来强制我们的32位应用程序始终使用64位存储,但建议不要这样做。然后,我想我们可以将.reg文件更改为指向32位存储,但建议不要假设密钥始终被称为“Wow6432Node” 除了将整个应用程序迁移到64位之外,还有什么更好的方法可以做到这一点

我们目前有一个32位的应用程序,需要在使用之前从注册表加载各种键/值对

在此之前,我们已经通过加载.reg作为安装的一部分完成了这项工作。在64位Windows上运行它,.reg组件最终位于64位存储中,但我们的32位应用程序位于32位存储中

我正在考虑使用来强制我们的32位应用程序始终使用64位存储,但建议不要这样做。然后,我想我们可以将.reg文件更改为指向32位存储,但建议不要假设密钥始终被称为“Wow6432Node”


除了将整个应用程序迁移到64位之外,还有什么更好的方法可以做到这一点吗?使用64位存储的32位应用程序有什么风险?

只要不将HKEY句柄传递给期望x86==本机注册表的非Reg*函数,我认为没有任何风险。(另一方面,文件系统重定向不是每个句柄,如果子函数调用LoadLibrary或CoCreateInstance等,则可能会导致问题)


如果使用KEY_WOW64_64KEY似乎太难了,为什么不让(32位)安装程序写入注册表而不是使用.reg文件呢?这样做的唯一缺点是,如果将来创建应用程序的x64版本,它将不会与x86版本共享设置。(这可能是好事也可能是坏事)

只要不将HKEY句柄传递给期望x86==本机注册表的非Reg*函数,我认为没有任何风险。(另一方面,文件系统重定向不是每个句柄,如果子函数调用LoadLibrary或CoCreateInstance等,则可能会导致问题)


如果使用KEY_WOW64_64KEY似乎太难了,为什么不让(32位)安装程序写入注册表而不是使用.reg文件呢?这样做的唯一缺点是,如果将来创建应用程序的x64版本,它将不会与x86版本共享设置。(这可能是件好事,也可能是件坏事)

+1不要使用.reg文件,让安装程序来完成这项工作是def的方法+1不要使用.reg文件,让安装程序来完成这项工作是def的方法