Путь тестирования Powershell в реестре зависит от среды хоста

Я попал в странную ситуацию.

Я хочу узнать, есть ли этот ключ реестра, запустив:

Test-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\RefCount\SQLSysClrTypes12"

Этот реестр существует на моей тестовой машине. Если я запустил этот сценарий с помощью консоли PowerShell (% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe), он вернет true.

НО

Если я запустил этот сценарий, сначала открыв командную строку, а затем запустите PowerShell (C: \ Windows \ system32> C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ powershell.exe)

тогда он не найдет ключ реестра.

Я также пробовал другой ключ реестра, некоторые из них работают на обоих хостах. Я также тестировал его в режиме администратора, ничего не изменилось.

В чем разница между этими исполняемыми файлами PowerShell (32-битная и 64-битная)?

Почему один возвращает результат, отличный от другого (у них другой доступ к реестру)?

Причина, по которой я сталкиваюсь с этим, заключается в том, что я разрабатываю сценарий с использованием ISE PowerShell по умолчанию, но когда я перевожу его в настраиваемое действие в Advanced Installer, он будет использовать powershell в SysWOW64 и не сможет найти ключ.


person dsum    schedule 06.01.2017    source источник
comment
Таким образом, в программе предварительной установки вы можете указать, является ли сценарий 64-разрядным сценарием, который изменяет запускаемый файл powershell.exe. Думаю, моя основная проблема решена. Однако мне все еще хотелось бы знать, почему? Раздел реестра предназначен для 64-разрядной версии SQL Server 2012, будет ли это работать, если я установлю 32-разрядную версию SQL Server 2012   -  person dsum    schedule 07.01.2017
comment
Возможный дубликат Как получить доступ 64-битный реестр из 32-битного экземпляра Powershell?   -  person Tony Hinkle    schedule 09.01.2017


Ответы (1)


Windows поддерживает два отдельных раздела в реестре для 32-битных и 64-битных приложений.

См. 32-разрядные и 64-разрядные версии. bit Данные приложения в реестре для получения дополнительной информации.

person Tony Hinkle    schedule 06.01.2017
comment
Спасибо за информацию. Я нашел еще один связанный с этим вопрос о переполнении стека: stackoverflow.com/questions/630382/ - person dsum; 07.01.2017