JavaScript 获取客户端计算机硬件及系统信息
通过WMI来实现获取客户端计算机硬件及系统信息:
1//系统信息获取
2functiongetSysInfo(){
3varlocator=newActiveXObject("WbemScripting.SWbemLocator");
4varservice=locator.ConnectServer(".");
5//CPU信息
6varcpu=newEnumerator(service.ExecQuery("SELECT*FROMWin32_Processor")).item();
7varcpuType=cpu.Name,hostName=cpu.SystemName;
8//内存信息
9varmemory=newEnumerator(service.ExecQuery("SELECT*FROMWin32_PhysicalMemory"));
10for(varmem=[],i=0;!memory.atEnd();memory.moveNext())mem[i++]={cap:memory.item().Capacity/1024/1024,speed:memory.item().Speed}
11//系统信息
12varsystem=newEnumerator(service.ExecQuery("SELECT*FROMWin32_ComputerSystem")).item();
13varphysicMenCap=Math.ceil(system.TotalPhysicalMemory/1024/1024),curUser=system.UserName,cpuCount=system.NumberOfProcessors
14
15return{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
示例:
1functionbutton1_onclick(){//cpu信息
2varlocator=newActiveXObject("WbemScripting.SWbemLocator");
3varservice=locator.ConnectServer(".");
4varproperties=service.ExecQuery("SELECT*FROMWin32_Processor");
5vare=newEnumerator(properties);
6document.write("<tableborder=1>");
7for(;!e.atEnd();e.moveNext())
8{
9varp=e.item();
10document.write("<tr>");
11document.write("<td>"+p.Caption+"</td>");
12document.write("<td>"+p.DeviceID+"</td>");
13document.write("<td>"+p.Name+"</td>");
14document.write("<td>"+p.CpuStatus+"</td>");
15document.write("<td>"+p.Availability+"</td>");
16document.write("<td>"+p.Level+"</td>");
17document.write("<td>"+p.ProcessorID+"</td>");
18document.write("<td>"+p.SystemName+"</td>");
19document.write("<td>"+p.ProcessorType+"</td>");
20document.write("</tr>");
21}
22document.write("</table>");
23}
24
25functionButton2_onclick(){//CD-ROM信息
26varlocator=newActiveXObject("WbemScripting.SWbemLocator");
27varservice=locator.ConnectServer(".");
28varproperties=service.ExecQuery("SELECT*FROMWin32_CDROMDrive");
29vare=newEnumerator(properties);
30document.write("<tableborder=1>");
31for(;!e.atEnd();e.moveNext())
32{
33varp=e.item();
34document.write("<tr>");
35document.write("<td>"+p.Caption+"</td>");
36document.write("<td>"+p.Description+"</td>");
37document.write("<td>"+p.Drive+"</td>");
38document.write("<td>"+p.Status+"</td>");
39document.write("<td>"+p.MediaLoaded+"</td>");
40document.write("</tr>");
41}
42document.write("</table>");
43}
44
45functionButton3_onclick(){//键盘信息
46varlocator=newActiveXObject("WbemScripting.SWbemLocator");
47varservice=locator.ConnectServer(".");
48varproperties=service.ExecQuery("SELECT*FROMWin32_Keyboard");
49vare=newEnumerator(properties);
50document.write("<tableborder=1>");
51for(;!e.atEnd();e.moveNext())
52{
53varp=e.item();
54document.write("<tr>");
55document.write("<td>"+p.Description+"</td>");
56document.write("<td>"+p.Name+"</td>");
57document.write("<td>"+p.Status+"</td>");
58document.write("</tr>");
59}
60document.write("</table>");
61}
62
63functionButton4_onclick(){//主板信息
64varlocator=newActiveXObject("WbemScripting.SWbemLocator");
65varservice=locator.ConnectServer(".");
66varproperties=service.ExecQuery("SELECT*FROMWin32_BaseBoard");
67vare=newEnumerator(properties);
68document.write("<tableborder=1>");
69for(;!e.atEnd();e.moveNext())
70{
71varp=e.item();
72document.write("<tr>");
73document.write("<td>"+p.HostingBoard+"</td>");
74document.write("<td>"+p.Manufacturer+"</td>");
75document.write("<td>"+p.PoweredOn+"</td>");
76document.write("<td>"+p.Product+"</td>");
77document.write("<td>"+p.SerialNumber+"</td>");
78document.write("<td>"+p.Version+"</td>");
79document.write("</tr>");
80}
81document.write("</table>");
82}
83
84
分享到:
相关推荐
JavaScript获取客户端计算机硬件及系统信息2009[借鉴].pdf
本文为大家详细介绍下如何使用JavaScript获取客户端计算机硬件及系统等信息,下面有个不错的示例,感兴趣的朋友可以参考下
获取计算机MAC、硬盘ID、操作系统等信息的ActiveX库 示例程序: <TITLE>ClientInfoX JavaScript Sample <script language="JavaScript"> xo=new ActiveXObject("ClientInfo.HostInfo") ///////////////////////...
在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际...
在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际...
使用WebSockets,它可以进一步扩展到客户端javascript。 该项目使用node-ffi将驱动程序功能公开给node.js服务器。 然后,客户端使用WebSockets连接到服务器并调用公开的功能。 运行说明 要求 确保计划在其上运行...
Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
14.3.3 计算机硬件故障 14.3.4 电力、通信、网络或运输故障 14.3.5 广泛的竞争 14.3.6 软件错误 14.3.7 不断变化的政府政策和税收 14.3.8 系统容量限制 14.4 选择一个策略 14.5 下一章 第15章 电子商务的安全问题 ...