您的位置:首页 > Web前端 > JavaScript

怎样用JS获取客户端的硬件、系统等信息(适用于IE浏览器)

2013-11-11 14:52 459 查看
   本文JS获取客户端的硬件、系统等信息的技术,仅适用于微软的Windows操作系统IE浏览器及IE内核的浏览器。
   通过WMI来实现获取客户端计算机硬件及系统信息,WMI就是Windows管理工具,他可以管理windows的方方面面,从常见的文件操作到硬件管理,都可以通过WMI来实现。  
   WMI的语法十分简单,对于所有的命名空间、对象等用法几乎一模一样。

   测试代码如下(文件名称为:test2.htm):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0Transitional//EN">
<html>
     <head>
          <title>获取终端信息测试</title>
          <meta name="GENERATOR" content="Microsoft VisualStudio .NET7.1">
          <meta name="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
     <script id=clientEventHandlersJSlanguage=javascript>
<!--
function Button2_onclick() {//CPU 信息
      varlocator = new ActiveXObject ("WbemScripting.SWbemLocator");
      varservice = locator.ConnectServer(".");
      varproperties = service.ExecQuery("SELECT * FROMWin32_Processor");
      var e= new Enumerator (properties);
     document.write("<tableborder=1>");
      for(;!e.atEnd();e.moveNext ())
     {
           var p =e.item ();
          document.write("<tr>");
          document.write("<td>" + p.Caption +"</td>");
          document.write("<td>" + p.DeviceID +"</td>");
          document.write("<td>" + p.Name +"</td>");
          document.write("<td>" + p.CpuStatus +"</td>");
          document.write("<td>" +p.Availability + "</td>");
          document.write("<td>" + p.Level +"</td>");
          document.write("<td>" + p.ProcessorID+ "</td>");
          document.write("<td>" + p.SystemName+ "</td>");
          document.write("<td>" +p.ProcessorType + "</td>");
          document.write("</tr>");
     }
     document.write("</table>");
}

 
function Button1_onclick() {//主板信息
      varlocator = new ActiveXObject ("WbemScripting.SWbemLocator");
      varservice = locator.ConnectServer(".");
      varproperties = service.ExecQuery("SELECT * FROMWin32_BaseBoard");
      var e= new Enumerator (properties);
     document.write("<tableborder=1>");
      for(;!e.atEnd();e.moveNext ())
     {
           var p =e.item ();
          document.write("<tr>");
          document.write("<td>" +p.HostingBoard + "</td>");
          document.write("<td>" +p.Manufacturer + "</td>");
          document.write("<td>" + p.PoweredOn +"</td>");
          document.write("<td>" + p.Product +"</td>");
          document.write("<td>" +p.SerialNumber + "</td>");
          document.write("<td>" + p.Version +"</td>");
          document.write("</tr>");
     }
     document.write("</table>");
}

function Button3_onclick() {//网络信息
      varlocator = new ActiveXObject ("WbemScripting.SWbemLocator");
      varservice = locator.ConnectServer(".");
      varproperties = service.ExecQuery("SELECT * FROMwin32_networkadapterconfiguration");
      var e= new Enumerator (properties);
     document.write("<tableborder=1>");
      for(;!e.atEnd();e.moveNext ())
     {
           var p =e.item ();
           if(p.IPAddress==null) {
              continue;
           }

          document.write("<tr>");
          document.write("<td>" + p.Caption +"</td>");
          document.write("<td>" +p.IPAddress(0) + "</td>");
          document.write("<td>" + p.MACAddress+ "</td>");
          document.write("</tr>");
     }
     document.write("</table>");
}

function Button4_onclick() {//系统信息
      varlocator = new ActiveXObject ("WbemScripting.SWbemLocator");
      varservice = locator.ConnectServer(".");
      varproperties = service.ExecQuery("SELECT * FROMWin32_ComputerSystem");
      var e= new Enumerator (properties);
     document.write("<tableborder=1>");
      for(;!e.atEnd();e.moveNext ())
     {
           var p =e.item ();
          document.write("<tr>");
          document.write("<td>" + p.Caption +"</td>");
          document.write("<td>" + p.UserName +"</td>");
          document.write("<td>" + p.Name +"</td>");
          document.write("<td>" +p.PrimaryOwnerName + "</td>");
          document.write("<td>" +p.Manufacturer + "</td>");   
          document.write("<td>" + p.DNSHostName+ "</td>");            
          document.write("</tr>");
     }
     document.write("</table>");
}
//-->
</script>
</head>
     <body>
          <INPUT id="Button1" type="button" value="主板信息"name="Button1" language=javascript onclick="returnButton1_onclick()">
          <INPUT id="Button3" type="button" value="网络信息"name="Button3" language=javascript onclick="returnButton3_onclick()">
          <INPUT id="Button4" type="button" value="系统信息"name="Button4" language=javascript onclick="returnButton4_onclick()">

     </body>
</html>

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

    先通过new ActiveXObject("WbemScripting.SWbemLocator"); 访问到WbemScripting对象。
   通过locator.ConnectServer(".");连接我们本地电脑(.代表本地电脑,当然也可以访问其他计算机)。
   通过service.ExecQuery("SELECT * FROMWin32_Processor")这个类似sql的语句(其实系统信息也是存储在计算中一个类似数据库的文件中)获取我们需要的对象的记录集。
    通过newEnumerator来创建一个可枚举的对象,下面就可以遍历取信息了。 
   注意:运行的前提是要修改浏览器安全设置,“允许对未标记为可安全执行的ActiveX脚本的运行”。

    常用WMI参考:

win32_processor // cpu 处理器
win32_physicalmemory // 物理内存
win32_diskdrive // 硬盘驱动器
win32_cdromdrive // 光盘驱动器
win32_baseboard // 主板
win32_bios // bios 芯片
win32_sounddevice // 多媒体设置
win32_networkadapter // 网络适配器
win32_networkadapterconfiguration // 网络适配器设置
win32_printer // 打印机
win32_desktopmonitor // 显示器
win32_timezone // 时区
win32_diskpartition // 磁盘分区
win32_pagefile // 系统页文件信息

win32_pagefilesetting // 页文件设置
Win32_ComputerSystem //计算机信息,例如:计算机名称、描述等
win32_networkadapterconfiguration //网络配置信息,例如:IP地址、MAC地址等
win32_operatingsystem //操作系统信息
win32_useraccount //用户帐号
......

参考文章:
怎么用js获取客户端的信息 http://www.111cn.net/wy/96/e78537872a9a946927d3ea02fa445f9f.htm
JS通过WMI获取客户端硬件信息 http://www.jscode.cn/web/v1804
JavaScript 获取客户端计算机硬件及系统信息 http://www.blogjava.net/redhatlinux/archive/2009/02/11/254254.html
Javascript获取客户端IP和Mac的问题 http://q.cnblogs.com/q/28775/

微软参考信息:
http://msdn.microsoft.com/en-us/library/aa394554(v=vs.85).aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: