考虑以下 powershell 脚本:
[System.IntPtr]::Size
[Environment]::Is64BitProcess
如果我直接在 64 位机器上的 powershell 中运行这个,那么我就可以正确获得
8
True
但是,当我使用 Inno Setup(在 32 位机器上构建)将其包装在自解压安装程序中时,我总是得到:
4
False
如何确保在 64 位计算机上 powershell 以 64 位模式运行(在 32 位计算机上以 32 位模式运行)?
我也尝试执行一个调用 powershell 脚本的批处理文件,假设系统将以其默认模式启动 powershell,但这也不起作用。
我也尝试过 iexpress 来包装程序,同样的问题。
答案1
如果您的安装程序是 32 位应用程序,它将始终启动 32 位 PowerShell。即使使用完整路径:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
因为 Windows 文件系统重定向器会将其更改为C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
要从 32 位进程启动 64 位 PowerShell,请使用:
C:\Windows\sysnative\WindowsPowerShell\v1.0\powershell.exe
在 32 位机器上,相同的命令仍应执行 32 位 PowerShell,但我无法再测试它。