
次の 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 を実行できるはずですが、これ以上テストすることはできません。