【问题标题】:RegDBQueryKey cannot list keys for 32- and 64-bit keys at the same timeRegDBQueryKey 不能同时列出 32 位和 64 位密钥的密钥
【发布时间】:2012-01-06 03:12:24
【问题描述】:

我在 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 中。

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

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

谁能帮我解决这个问题?

【问题讨论】:

    标签: registry 64-bit 32-bit installscript


    【解决方案1】:

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

    REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY;
    

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

    REGDB_OPTIONS = REGDB_OPTION_USE_DEFAULT_OPTIONS;
    

    【讨论】:

    • +1 表示底线...以及提醒完成后重置标志。我遇到的导致我提出这个问题和答案的问题源于未能做到这一点!
    猜你喜欢
    • 1970-01-01
    • 2015-08-27
    • 2013-09-02
    • 2017-03-15
    • 2023-03-25
    • 2023-01-28
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    相关资源
    最近更新 更多