JS通過WMI獲取客戶端硬件信息
2024-09-06 12:40:55
供稿:網友
通過wmi來實現獲取客戶端計算機硬件及系統信息:
1//系統信息獲取
2function getsysinfo(){
3 var locator = new activexobject ("wbemscripting.swbemlocator");
4 var service = locator.connectserver(".");
5 //cpu信息
6 var cpu = new enumerator (service.execquery("select * from win32_processor")).item();
7 var cputype=cpu.name,hostname=cpu.systemname;
8 //內存信息
9 var memory = new enumerator (service.execquery("select * from win32_physicalmemory"));
10 for (var mem=[],i=0; !memory.atend(); memory.movenext()) mem[i++]={cap:memory.item().capacity/1024/1024,speed:memory.item().speed}
11 //系統信息
12 var system=new enumerator (service.execquery("select * from win32_computersystem")).item();
13 var physicmencap=math.ceil(system.totalphysicalmemory/1024/1024),curuser=system.username,cpucount=system.numberofprocessors
14
15 return {cputype:cputype,cpucount:cpucount,hostname:hostname,curuser:curuser,memcap:physicmencap,mem:mem}
16}
代碼實現主要包括這幾部分:
先通過new activexobject ("wbemscripting.swbemlocator"); 訪問到wbemscripting對象。
通過locator.connectserver("."); 連接我們本地電腦(.代表本地電腦,當然
也可以訪問其他計算機)。
通過service.execquery("select * from win32_processor")這個類似sql的語句(其實系統信息也是存儲在計算中一個類似數據庫的文件中)獲取我們需要的對象的記錄集。
通過new enumerator來創建一個可枚舉的對象,下面就可以遍歷取信息了。
注意:運行的前提是要修改瀏覽器安全設置,“允許對未標記為可安全執行的activex
腳本的運行”。
這里主要取了cpu、內存及系統用戶幾個信息,大家利用wmi的api或者借助jsedit獲取
到更多的信息。下面列出了常用信息的類:
win32_processor // cpu 處理器
win32_physicalmemory // 物理內存
win32_keyboard // 鍵盤
win32_pointingdevice // 點輸入設備,如鼠標
win32_diskdrive // 硬盤驅動器
win32_cdromdrive // 光盤驅動器
win32_baseboard // 主板
win32_bios // bios 芯片
win32_parallelport // 并口
win32_serialport // 串口
win32_sounddevice // 多媒體設置
win32_usbcontroller // usb 控制器
win32_networkadapter // 網絡適配器
win32_networkadapterconfiguration // 網絡適配器設置
win32_printer // 打印機
win32_printerconfiguration // 打印機設置
win32_printjob // 打印機任務
win32_tcpipprinterport // 打印機端口
win32_potsmodem // modem
win32_potsmodemtoserialport // modem 端口
win32_desktopmonitor // 顯示器
win32_videocontroller // 顯卡細節。
win32_videosettings // 顯卡支持的顯示模式。
win32_timezone // 時區
win32_systemdriver // 驅動程序
win32_diskpartition // 磁盤分區
win32_logicaldisk // 邏輯磁盤
win32_logicalmemoryconfiguration // 邏輯內存配置
win32_pagefile // 系統頁文件信息
win32_pagefilesetting // 頁文件設置
win32_bootconfiguration // 系統啟動配置
win32_operatingsystem // 操作系統信息
win32_startupcommand // 系統自動啟動程序
win32_service // 系統安裝的服務
win32_group // 系統管理組
win32_groupuser // 系統組帳號
win32_useraccount // 用戶帳號
win32_process // 系統進程
win32_thread // 系統線程
win32_share // 共享
win32_networkclient // 已安裝的網絡客戶端
win32_networkprotocol // 已安裝的網絡協議
wmi win32類的完整信息及詳細列表請參考msdn:
http://msdn2.microsoft.com/en-us/library/aa394084(vs.85).aspx
示例:
1function button1_onclick() {//cpu 信息
2 var locator = new activexobject ("wbemscripting.swbemlocator");
3 var service = locator.connectserver(".");
4 var properties = service.execquery("select * from win32_processor");
5 var e = new enumerator (properties);
6 document.write("<table border=1>");
7 for (; !e.atend(); e.movenext ())
8 {
9 var p = e.item ();
10 document.write("<tr>");
11 document.write("<td>" + p.caption + "</td>");
12 document.write("<td>" + p.deviceid + "</td>");
13 document.write("<td>" + p.name + "</td>");
14 document.write("<td>" + p.cpustatus + "</td>");
15 document.write("<td>" + p.availability + "</td>");
16 document.write("<td>" + p.level + "</td>");
17 document.write("<td>" + p.processorid + "</td>");
18 document.write("<td>" + p.systemname + "</td>");
19 document.write("<td>" + p.processortype + "</td>");
20 document.write("</tr>");
21 }
22 document.write("</table>");
23}
24
25function button2_onclick() {//cd-rom 信息
26 var locator = new activexobject ("wbemscripting.swbemlocator");
27 var service = locator.connectserver(".");
28 var properties = service.execquery("select * from win32_cdromdrive");
29 var e = new enumerator (properties);
30 document.write("<table border=1>");
31 for (; !e.atend(); e.movenext ())
32 {
33 var p = e.item ();
34 document.write("<tr>");
35 document.write("<td>" + p.caption + "</td>");
36 document.write("<td>" + p.description + "</td>");
37 document.write("<td>" + p.drive + "</td>");
38 document.write("<td>" + p.status + "</td>");
39 document.write("<td>" + p.medialoaded + "</td>");
40 document.write("</tr>");
41 }
42 document.write("</table>");
43}
44
45function button3_onclick() {//鍵盤信息
46 var locator = new activexobject ("wbemscripting.swbemlocator");
47 var service = locator.connectserver(".");
48 var properties = service.execquery("select * from win32_keyboard");
49 var e = new enumerator (properties);
50 document.write("<table border=1>");
51 for (; !e.atend(); e.movenext ())
52 {
53 var p = e.item ();
54 document.write("<tr>");
55 document.write("<td>" + p.description + "</td>");
56 document.write("<td>" + p.name + "</td>");
57 document.write("<td>" + p.status + "</td>");
58 document.write("</tr>");
59 }
60 document.write("</table>");
61}
62
63function button4_onclick() {//主板信息
64 var locator = new activexobject ("wbemscripting.swbemlocator");
65 var service = locator.connectserver(".");
66 var properties = service.execquery("select * from win32_baseboard");
67 var e = new enumerator (properties);
68 document.write("<table border=1>");
69 for (; !e.atend(); e.movenext ())
70 {
71 var p = e.item ();
72 document.write("<tr>");
73 document.write("<td>" + p.hostingboard + "</td>");
74 document.write("<td>" + p.manufacturer + "</td>");
75 document.write("<td>" + p.poweredon + "</td>");
76 document.write("<td>" + p.product + "</td>");
77 document.write("<td>" + p.serialnumber + "</td>");
78 document.write("<td>" + p.version + "</td>");
79 document.write("</tr>");
80 }
81 document.write("</table>");
82}