如何通过Install Script功能将注册表添加到64位区域?

How to add registry to 64bit area through Install Script function?

许多InstallShield 开发者对如何在InstallShield 中使用IstallScript 函数将registry 添加到64 位区域 有疑问。

如果我们的安装程序是 32 位 EXE,如果我们在 64 位机器上安装这个安装程序,那么所有 RegDB 函数都指向 Wow6432Node 注册表区域。但是很多时候我们必须使用 32 位安装程序将注册表添加到 64 位区域。那么我们如何才能做到这一点呢?

例如 如果我在 InstallScript 中执行以下代码。

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBCreateKeyEx("SOFTWARE\XYZ", "");

我想在 HKLM\SOFTWARE\XYZ 下添加此注册表项。但是这个条目被添加到 HKLM\SOFTWARE\Wow6432Node\XYZ 下。

那么在64位区下添加这个注册表有什么办法呢?

有两种解决方案可以实现这种情况。

第一个解决方案是,

我们可以创建组件,将其设为 64 位,然后我们将在 InstallShield 中在其下添加注册表项。

第二种解决方案是,

如果我们想添加独立于任何组件的注册表,那么我们可以使用REGDB_OPTIONS

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY;
RegDBCreateKeyEx("SOFTWARE\XYZ", "");

这会将注册表添加到 64 位区域。