Рассмотрим следующий скрипт powershell:

[System.IntPtr]::Size
[Environment]::Is64BitProcess

Если я запускаю это прямо в powershell на 64-битной машине, то я правильно получаю

8
True

Но когда я оборачиваю это в самораспаковывающийся инсталлятор с помощью Inno Setup (который построен на 32-битной машине), я всегда получаю:

4
False

Как убедиться, что powershell работает в 64-битном режиме на 64-битном компьютере (и 32-битном для 32-битного компьютера)?

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

Я также пытался iexpress, чтобы обернуть программу, та же проблема.

1 ответ1

0

Если ваш установщик является 32-битным приложением, он всегда запускает 32-битную PowerShell. Даже используя полный путь:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

потому что перенаправитель файловой системы Windows изменит его на C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

чтобы запустить 64-битную PowerShell из 32-битного процесса, используйте:

C:\Windows\sysnative\WindowsPowerShell\v1.0\powershell.exe

на 32-битной машине та же команда должна по-прежнему выполнять 32-битную PowerShell, но я больше не могу это проверить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .