如何通过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 位区域。
许多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 位区域。