Windows注册表重定向是“坏事”吗?

时间:2012-06-24 14:00:32

标签: windows visual-c++ registry wow64 virtualstore

我有自己的安装程序,用于安装我编写的几个应用程序。

我一直在更新这个程序,以避免将应用程序的数据文件更新发送到用户的VirtualStore,因为我读到这是一个“坏事”。我这样做是通过将程序和公共数据文件分别存储在正确的位置,而不是像我们在XP时代那样将所有内容都粘贴在程序文件中。

我现在也在使用SHGetFolderPath(是的,它已被弃用,但我仍然需要支持我的XP用户),获取已知文件夹而不是拖网注册表,这是另一个“坏事”(我读过)。

接下来我要做的是重写安装程序代码以避免在向HKLM写东西时将注册表重定向到Wow6432Node,因为我认为这是另一个“坏事”。

然而,虽然我可以把应用程序特定的东西放在那里(如安装文件夹,如果用户决定以默认值以外的方式安装),杀手是需要将卸载信息放在HKLM \ Software \微软\的Windows \ CurrentVersion \卸载。对于在64位系统上运行的32位内容,会将其重定向到Wow6432Node。我没有看到任何解决方法 - 它实际上是否可能?

1 个答案:

答案 0 :(得分:2)

UAC注册表重定向可以合理地被描述为“坏事”,因为它专门设计用于提供与不正确编写的软件的兼容性,即假定它将以管理员权限运行的软件。

WOW64注册表重定向是一个不同的野兽;它旨在提供与正确编写的32位软件的兼容性。如果您的软件是32位的,并且没有特别需要64位识别,那么让它在仿真环境中按原样运行并没有错,包括允许将注册表设置重定向到Wow6432Node。

如果有必要,您可以bypass WOW64 registry redirection,但只有在有特殊原因的情况下,您才不应该这样做。如果WOW64重定向让您担心,唯一的好办法就是提供64位版本的程序。