RegDBQueryKey не может перечислить ключи для 32- и 64-битных ключей одновременно - PullRequest
3 голосов
/ 25 ноября 2011

Я столкнулся с проблемой в InstallScript для получения списка разделов реестра для 32- и 64-разрядных установок.

Моя машина - Windows Server 2008, 64-разрядная.Я могу установить 32-разрядную или 64-разрядную версию SQL Server 2008 на этом компьютере.

Теперь во время установки мне нужно знать, установлена ​​ли какая-либо из версий SQL Server.

Насколько я понимаю,

  • 64-битные приложения на 64-битной машине хранятся в Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall.
  • 32-битные приложения на 64-битной машине хранятся в Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall.

Я написал функцию, которая должна искать в обоих этих местах установку SQL Server, используя функцию RegDBQueryKey.

Даже если я передам "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall" в RegDBQueryKey, в нем перечислены ключи Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall.

Кто-нибудь может мне помочь с этой проблемой?

1 Ответ

3 голосов
/ 18 июля 2012

Установите этот флаг перед вашим вызовом RegDBQueryKey:

REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY;

Это отключит переадресацию по умолчанию на 64-битную версию ключа и даст вам 32-битную версию.Он применяется глобально, поэтому, когда вы закончите, обязательно сбросьте флаг, используя:

REGDB_OPTIONS = REGDB_OPTION_USE_DEFAULT_OPTIONS;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...