2017-01-06 10 views
0

Я столкнулся с странной ситуацией.Test-Path 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 бит)?

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

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

+0

Итак, в Advance Installer вы можете указать, является ли скрипт 64-разрядным скриптом, который изменяет файл powershell.exe для запуска. Думаю, моя основная проблема решена. Однако мне все же нравится знать, почему? Ключ реестра для 64-битного SQL Server 2012, будет ли это работать, если я установлю SQL Server 2012 32 бит – dsum

+1

Возможный дубликат [Как получить доступ к 64-разрядному реестру из 32-разрядного экземпляра Powershell?] (Http://stackoverflow.com/questions/630382/how-to-access-the-64-bit-registry-from-a-32-bit-powershell-instance) –

ответ

1

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

Для получения дополнительной информации см. 32-bit and 64-bit Application Data in the Registry.

+0

Спасибо за информацию. Я нашел еще один связанный с этим вопрос stackoverflow: http://stackoverflow.com/questions/630382/how-to-access-the-64-bit-registry-from-a-32-bit-powershell-instance – dsum