将设置写入注册表,由x64和x86应用程序共享(绕过注册表重定向)

问题描述:

我想在运行Windows 7 x64的x86和x64应用程序共享的注册表中编写应用程序设置。将设置写入注册表,由x64和x86应用程序共享(绕过注册表重定向)

最佳做法是将它们保存在HKEY_LOCAL_MACHINE \ Software \ Company \ Product中,但是在WOW64中时将被重定向。

我可以在HKEY_LOCAL_MACHINE \ System中写入它们吗?或系统是保留给其他thigns?

在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

+1

但我不想在我的程序中对Wow6432进行硬编码(我读过这不推荐)。最好禁用我的密钥重定向。我可以这样做吗? – Nestor 2009-12-10 17:37:16

+0

我认为可以禁用的是反射,但不是重定向......我是对的吗? – Nestor 2009-12-10 18:46:10

+0

你说得对。 :) – treaschf 2009-12-11 06:24:11

可以使用的手册中描述的SetRegView选项: http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.7.6

Function .onInit SetRegView 64 ReadRegStr $ INSTDIR HKLM Software \ NSIS“” SetRegView 32 Function结束