Я попал в странную ситуацию.
Я хочу узнать, есть ли этот ключ реестра, запустив:
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 и не сможет найти ключ.