当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JS通过WMI获取客户端硬件信息

Javascript
IE8 原生JSON支持
iframe 自适应高度[在IE6 IE7 FF下测试通过]
javascript 清除输入框中的数据
IE和FireFox(FF)中js和css的不同
JavaScript asp.net 获取当前超链接中的文本
用JavaScript页面不刷新时全选择,全删除(GridView)
JavaScript获取GridView选择的行内容
javaScript 读取和设置文档元素的样式属性
js select 控制实现代码
javascript 类方法定义还是有点区别
jQuery 绝对入门
网页开发中的容易忽略的问题 javascript HTML中的table
childNodes 用法两例
js 只能输入数字和小数点的文本框改进版
javascript 09年最新版的省市联动
jquery 实现的全选和反选
js 拖拽翻页实现代码
保证JavaScript和Asp、Php等后端程序间传值编码统一
JavaScript 无符号右移赋值操作
JavaScript 无符号右移运算符

Javascript 中的 JS通过WMI获取客户端硬件信息


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 262 ::
收藏到网摘: n/a

通过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}