将设置写入注册表,由 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 应用程序共享(绕过注册表重定向)的主要内容,如果未能解决你的问题,请参考以下文章

从 x64 .NET 访问 x86 COM

如何将 x86 和 x64 asm 文件包含到单个 Visual Studio 项目中?

LNK2019 错误:在 x64 机器上使用 x86 库 [重复]

将 x86 转换为 x64 发生链接错误(2019)

将 x86 更改为 x64 会影响我的 LNK1168 错误

模块计算机类型“X86”与目标计算机类型“X64”冲突,设置成X64后还有错误!答案在此!