3

我在 InstallScript 中遇到了获取 32 位和 64 位安装的注册表项列表的问题。

我的机器是 Windows Server 2008 64 位。我可以在这台机器上安装 SQL Server 2008 32 位版本或 64 位版本。

现在在安装过程中,我需要知道是否安装了任何一个 SQL Server 版本。

据我了解,

  • 64 位机器上的 64 位应用程序存储在Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall.
  • 64 位机器上的 32 位应用程序存储在Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall.

我编写了一个函数,它应该使用该函数在这两个位置搜索 SQL Server 安装RegDBQueryKey

即使我传递"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"RegDBQueryKey,它也会列出 的键Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall

谁能帮我解决这个问题?

4

1 回答 1

3

在调用 RegDBQueryKey 之前设置此标志:

REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY;

这将禁用默认转发到 64 位版本的密钥,并为您提供 32 位版本。它适用于全局,所以当你完成后,请确保使用以下方法重置标志:

REGDB_OPTIONS = REGDB_OPTION_USE_DEFAULT_OPTIONS;
于 2012-07-18T19:10:44.963 回答