起初我还以为你可以看看PROCESSOR_ARCHITECTURE
环境变量:
Set objShell = WScript.CreateObject("WScript.Shell")
Set colSystemEnvVars = objShell.Environment("System")
WSCript.Echo "System = " & colSystemEnvVars("PROCESSOR_ARCHITECTURE")
在对64位操作系统的32位命令提示符(即CMD.EXE从SYSWOW64开始),则将返回x86而不是AMD64。然而,从64位CMD.EXE开始的32位CSCRIPT中,它仍然返回AMD64。所以唯一的另一种方式(在我看来这有点破绽 - 主要是假设路径总是看起来很糟糕,但这可能足够静态以保证可靠),就是将它与查看CSCRIPT的位置组合起来从推出:
WScript.Echo WScript.FullName
...如果WScript.FullName
包含SysWOW64中,那么它在64位盒(最有可能)的32位CSCRIPT。如果它包含System32,那么你可以回退到PROCESSOR_ARCHITECTURE环境变量。
附录
我最近有运行Windows 7 64位的新机,这提供了进一步的可能性(原来的答案是基于64位服务器2008盒)。现在有一个新的环境变量PROCESSOR_ARCHITEW6432
。快速实验表明:
- 64位的cmd.exe:
PROCESSOR_ARCHITECTURE=AMD64
和PROCESSOR_ARCHITEW6432
未设置
- 32位的cmd.exe:
PROCESSOR_ARCHITECTURE=x86
和PROCESSOR_ARCHITEW6432=AMD64
+1;可能是你可以做的最好的事情,而不需要搞乱你可以控制的COM对象。你现在有10K代表! – Bathsheba