我在InstallScript中遇到了一个问题,即获取32位和64位安装的注册表项列表。
我的机器是Windows Server 2008 64位。我可以在这台机器上安装SQL Server 2008 32位版本或64位版本。
现在在设置过程中,我需要知道是否安装了任何一个SQL Server版本。
根据我的理解,
Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall
。Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall
。我编写了一个函数,应该使用RegDBQueryKey
函数搜索这两个位置以进行SQL Server安装。
即使我将"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
传递给RegDBQueryKey
,它也会列出Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall
的键。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:3)
在调用RegDBQueryKey之前设置此标志:
REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY;
这将禁用默认转发到64位版本的密钥,并为您提供32位版本。它适用于全球,所以当您完成后,请确保使用以下方式重置标志:
REGDB_OPTIONS = REGDB_OPTION_USE_DEFAULT_OPTIONS;