作者TKyo (闇黑贵公子)
看板Programming
标题Re: [问题] 如何利用command line或WHS来判断32 or …
时间Fri Sep 5 08:03:59 2008
※ 引述《lovelight (lovelight)》之铭言:
: 我竟然忘了说这是在Vista环境 /_\
: 我来统整一下大家给我的意见及实验结果
: 还有这个想法不是想找出CPU支援32还是64,是想找出作业系统灌的是32还是64
: 1.WMIC -> 我用的指令只有show出"Windows NT",并没有指明出32或64
: (还是有指令我不会用..)
[commnad]
wmic OS GET CreationClassName
[output]
CreationClassName
Win64_OperatingSystem
: 2.Vista似乎没有prodspec.ini这个档案
即使有, 你也很难判断
因为里头的 [Product Specification] Product=xxxx
xxxx 是安装 OS 的全名
而 MS$ 需要判断的 64 bit OS 有几种呢? 字都不能打错喔 :)
: 3.本来想说找regedit里看有没有关键字x86或x64,也是没啥结果
: 结论:还是没成功
PROCESSOR_ARCHITECTURE 比对格式很多种
IF PROCESSOR_ARCHITECTURE == AMD64 OR
PROCESSOR_ARCHITECTURE == x86-64 OR
PROCESSOR_ARCHITECTURE == AMD x86-64 OR
PROCESSOR_ARCHITECTURE == Intel64 OR
PROCESSOR_ARCHITEW6432 == AMD64
// 64bit OS
ELSE
// 32bit OS
END IF
---------------------------------------------------------------------------
至於跟标题有关的 WSH (Windows Script Host)
[JScript]
var wshShell = WScript.CreateObject("WScript.Shell");
var wshEnv = wshShell.Environment("SYSTEM");
WScript.Echo(wshEnv("PROCESSOR_ARCHITECTURE"));
PROCESSOR_ARCHITECTURE 判断方式不累述
---------------------------------------------------------------------------
不过, 我自己用的是 API 判断就是, 这样比较省事, 底下是 C# 范例
[DllImport("kernel32.dll")]
private static extern uint GetSystemWow64Directory(StringBuilder lpBuffer,
uint uSize);
internal static bool Is64BitOS()
{
const int MAX_PATH = 260;
StringBuilder buffer = new StringBuilder(MAX_PATH);
return (GetSystemWow64Directory(buffer, MAX_PATH) > 0);
}
---------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.168.73
2F:→ Ross0916:官方作法 有教 batch file 的做法喔 140.112.5.10 09/05 11:23