→ Ross0916:官方作法 有教 batch file 的做法喔 140.112.5.10 09/05 11:23
※ 引述《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