许多InstallShield开发人员都怀疑如何使用InstallShield中的IstallScript函数将注册表添加到64位区域。
如果我们的安装程序是32位EXE,并且如果我们在64位计算机上安装此安装程序,则所有RegDB功能都指向 Wow6432Node 注册表区域。但很多时候我们必须使用32位安装程序将注册表添加到64位区域。那么我们如何实现这一目标呢?
例如 如果我在InstallScript中执行以下代码。
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBCreateKeyEx("SOFTWARE\\XYZ", "");
我想在HKLM\SOFTWARE\XYZ
下添加此注册表项。但是此条目会添加到HKLM\SOFTWARE\Wow6432Node\XYZ
下。
那么在64位区域下添加此注册表的解决方案是什么?
答案 0 :(得分:1)
有两种解决方案可以实现这种情况。
第一个解决方案是,
我们可以创建组件,使其成为64位,我们将在InstallShield中添加注册表项。
第二个解决方案是,
如果我们想要添加独立于任何组件的注册表,那么我们可以使用REGDB_OPTIONS
。
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY;
RegDBCreateKeyEx("SOFTWARE\\XYZ", "");
这会将注册表添加到64位区域。