Задача
Из командного файла прочитать значение в реестре. В 64-х разрядной системе, в зависимости от условия читать из 32-х или 64-х битной ветки. Если используется 64-х битная версия cmd.exe, всё относительно просто: в зависимости от условия читать из HKLM\Software или HKLM\Software\Wow6432Node.
В 32-х битной версии командного интерпретатора (Post-Build Event в Visual Studio) этот способ не работает, т.к. запросы reg.exe перенаправляются подсистемой WOW64 в HKLM\Software\Wow6432Node.
Решение
Как подсказывает заголовок, reg.exe имеет недокументированный ключ /reg:. После двоеточия, без пробела, следует указать требуемую разрядность ("32" или "64"). Этот ключ работает в 32-х битной и 64-х битной версии утилиты, поэтому грамотно созданный командный файл будет корректно работать в интерпретаторе любой разрядности.
Пример использования (на всякий случай):
Рабочая среда: Windows 7 x64
Из командного файла прочитать значение в реестре. В 64-х разрядной системе, в зависимости от условия читать из 32-х или 64-х битной ветки. Если используется 64-х битная версия cmd.exe, всё относительно просто: в зависимости от условия читать из HKLM\Software или HKLM\Software\Wow6432Node.
В 32-х битной версии командного интерпретатора (Post-Build Event в Visual Studio) этот способ не работает, т.к. запросы reg.exe перенаправляются подсистемой WOW64 в HKLM\Software\Wow6432Node.
Решение
Как подсказывает заголовок, reg.exe имеет недокументированный ключ /reg:. После двоеточия, без пробела, следует указать требуемую разрядность ("32" или "64"). Этот ключ работает в 32-х битной и 64-х битной версии утилиты, поэтому грамотно созданный командный файл будет корректно работать в интерпретаторе любой разрядности.
Пример использования (на всякий случай):
reg.exe query HKLM\Software\Python\PythonCore\2.6\InstallPath /ve /reg:64
Рабочая среда: Windows 7 x64
Комментариев нет:
Отправить комментарий