
Betrachten Sie das folgende Powershell-Skript:
[System.IntPtr]::Size
[Environment]::Is64BitProcess
Wenn ich dies direkt in Powershell auf einem 64-Bit-Rechner ausführe, erhalte ich korrekt
8
True
Aber wenn ich dies in ein selbstextrahierendes Installationsprogramm mit Inno Setup einbinde (das auf einem 32-Bit-Computer erstellt wird), erhalte ich immer:
4
False
Wie stelle ich sicher, dass Powershell auf einem 64-Bit-Computer im 64-Bit-Modus ausgeführt wird (und auf einem 32-Bit-Computer im 32-Bit-Modus)?
Ich habe auch versucht, eine Batchdatei auszuführen, die das Powershell-Skript aufruft, in der Annahme, dass das System Powershell im Standardmodus starten würde, aber auch das funktioniert nicht.
Ich habe auch versucht, das Programm mit iExpress zu umschließen, gleiches Problem.
Antwort1
Wenn Ihr Installationsprogramm eine 32-Bit-Anwendung ist, wird immer eine 32-Bit-PowerShell gestartet. Auch bei Verwendung des vollständigen Pfads:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
weil der Windows-Dateisystem-Redirector es ändert inC:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
um eine 64-Bit-PowerShell aus einem 32-Bit-Prozess zu starten, verwenden Sie:
C:\Windows\sysnative\WindowsPowerShell\v1.0\powershell.exe
Auf einem 32-Bit-Computer sollte derselbe Befehl immer noch die 32-Bit-PowerShell ausführen, aber ich kann das nicht mehr testen.