将设置写入注册表,由 x64 和 x86 应用程序共享(绕过注册表重定向)
Posted
技术标签:
【中文标题】将设置写入注册表,由 x64 和 x86 应用程序共享(绕过注册表重定向)【英文标题】:Writting settings to the registry, shared by x64 and x86 apps (bypassing registry redirection) 【发布时间】:2009-12-10 17:27:51 【问题描述】:我想在注册表中编写应用程序设置,这些设置由在 Windows 7 x64 上运行的 x86 和 x64 应用程序共享。
最佳做法是将它们保存在 HKEY_LOCAL_MACHINE\Software\Company\Product 中,但在 WOW64 中会被重定向。
我可以将它们写在 HKEY_LOCAL_MACHINE\System.. 中吗?或者系统是为其他事情保留的?
【问题讨论】:
【参考方案1】:在 x64 模式下,您仍然可以访问 WOW64 模式的值。 WOW64 HKEY_LOCAL_MACHINE\Software\Company\Product 将位于 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Company\Product 下。
编辑:
也可以为某些键禁用反射,如下所述:http://msdn.microsoft.com/en-us/library/ms724072(VS.85).aspx
【讨论】:
但我不想在我的程序中硬编码 Wow6432(我已经阅读了不推荐的内容)。最好禁用我的密钥的重定向。我可以这样做吗? 我认为可以禁用的是反射,而不是重定向……我说的对吗? 使用 XML 文件可能是更好的方法。【参考方案2】:您可以按照手册中的说明使用 SetRegView 选项: http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.7.6
函数 .onInit 设置RegView 64 ReadRegStr $INSTDIR HKLM 软件\NSIS "" 设置RegView 32 函数结束
【讨论】:
谢谢,但您有不是特定于 NSIS 的示例吗?以上是关于将设置写入注册表,由 x64 和 x86 应用程序共享(绕过注册表重定向)的主要内容,如果未能解决你的问题,请参考以下文章
如何将 x86 和 x64 asm 文件包含到单个 Visual Studio 项目中?
LNK2019 错误:在 x64 机器上使用 x86 库 [重复]