将设置写入注册表,由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
答
可以使用的手册中描述的SetRegView选项: http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.7.6
Function .onInit SetRegView 64 ReadRegStr $ INSTDIR HKLM Software \ NSIS“” SetRegView 32 Function结束
但我不想在我的程序中对Wow6432进行硬编码(我读过这不推荐)。最好禁用我的密钥重定向。我可以这样做吗? – Nestor 2009-12-10 17:37:16
我认为可以禁用的是反射,但不是重定向......我是对的吗? – Nestor 2009-12-10 18:46:10
你说得对。 :) – treaschf 2009-12-11 06:24:11