PROCESSOR_ARCHITECTURE
最初は、環境変数を見ることができると思いました:
Set objShell = WScript.CreateObject("WScript.Shell")
Set colSystemEnvVars = objShell.Environment("System")
WSCript.Echo "System = " & colSystemEnvVars("PROCESSOR_ARCHITECTURE")
64 ビット OS 上の 32 ビット コマンド プロンプト (つまり、SysWow64 から開始された CMD.EXE) では、AMD64 ではなく x86 が返されます。ただし、64 ビットの CMD.EXE から開始された 32 ビットの CSCRIPT 内からは、依然として AMD64 が返されるようです。
したがって、他の唯一の方法 (私の意見では少しハックです - ほとんどの場合、パスからのものは常に悪いように見えますが、これはおそらく信頼できるほど十分に静的です) は、これを CSCRIPT がどこから起動されたかを調べることと組み合わせることです。
WScript.Echo WScript.FullName
... WScript.FullName
SysWOW64 が含まれている場合は、64 ビット ボックス上の 32 ビット cscript です (ほとんどの場合)。System32 が含まれている場合は、PROCESSOR_ARCHITECTURE 環境変数にフォールバックできます。
補遺
最近、Windows 7 64 ビットを実行する新しいマシンを使用しましたが、これによりさらに可能性が広がります (元の回答は 64 ビットの Server 2008 ボックスに基づいていました)。新しい環境変数が追加されましたPROCESSOR_ARCHITEW6432
。簡単な実験で次のことがわかります。
- 64 ビット cmd.exe:
PROCESSOR_ARCHITECTURE=AMD64
およびPROCESSOR_ARCHITEW6432
未設定
- 32 ビットの cmd.exe:
PROCESSOR_ARCHITECTURE=x86
およびPROCESSOR_ARCHITEW6432=AMD64