`
阿尔萨斯
  • 浏览: 4214499 次
社区版块
存档分类
最新评论

JavaScript 获取客户端计算机硬件及系统信息

 
阅读更多

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}

代码实现主要包括这几部分:

    1. 先通过new ActiveXObject ("WbemScripting.SWbemLocator"); 访问到WbemScripting对象。
    2. 通过locator.ConnectServer(".");连接我们本地电脑(.代表本地电脑,当然
    3. 也可以访问其他计算机)。
    4. 通过service.ExecQuery("SELECT * FROM Win32_Processor")这个类似sql的语句(其实系统信息也是存储在计算中一个类似数据库的文件中)获取我们需要的对象的记录集。
    5. 通过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获取客户端计算机硬件及系统信息2009[借鉴].pdf

    JavaScript获取客户端计算机硬件及系统等信息的方法

    本文为大家详细介绍下如何使用JavaScript获取客户端计算机硬件及系统等信息,下面有个不错的示例,感兴趣的朋友可以参考下

    获取硬件信息的ActiveX库

    获取计算机MAC、硬盘ID、操作系统等信息的ActiveX库 示例程序: &lt;TITLE&gt;ClientInfoX JavaScript Sample &lt;script language="JavaScript"&gt; xo=new ActiveXObject("ClientInfo.HostInfo") ///////////////////////...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际...

    基于J2EE框架的个人博客系统项目毕业设计论...

    在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际...

    node-DAQmx:公开DAQmx C驱动程序API的node.js应用程序,以及来自客户端Javascript的基于WebSocket的RPC

    使用WebSockets,它可以进一步扩展到客户端javascript。 该项目使用node-ffi将驱动程序功能公开给node.js服务器。 然后,客户端使用WebSockets连接到服务器并调用公开的功能。 运行说明 要求 确保计划在其上运行...

    JAVA上百实例源码以及开源项目源代码

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    java源码包---java 源码 大量 实例

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    java源码包2

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    java源码包3

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...

    java源码包4

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    PHP和MySQL WEB开发(第4版)

    14.3.3 计算机硬件故障 14.3.4 电力、通信、网络或运输故障 14.3.5 广泛的竞争 14.3.6 软件错误 14.3.7 不断变化的政府政策和税收 14.3.8 系统容量限制 14.4 选择一个策略 14.5 下一章 第15章 电子商务的安全问题 ...

Global site tag (gtag.js) - Google Analytics