首页 电脑 电脑学堂 查看内容

怎样用JS获取客户端的硬件、系统等信息

2015-8-31 11:42 3322 0

摘要: 本文JS获取客户端的硬件、系统等信息的技术,仅适用于微软的Windows操作系统IE浏览器及IE内核的浏览器。 通过WMI来实现获取客户端计算机硬件及系统信息,WMI就是Windows管理工具,他可以管理windows的方方面面,从 ...
关键词: nbsp Win 信息 32 硬件 计算机 客户端 系统 对象 文件


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

    测试代码如下(文件名称为:test2.htm):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
      <head>
            <title>获取终端信息测试</title>
            <meta name="GENERATOR" content="Microsoft Visual Studio .NET7.1">
            <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
      <script id=clientEventHandlersJS language=javascript>
<!--
function Button2_onclick() {//CPU 信息
      var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
      var service = locator.ConnectServer(".");
      var properties = service.EⅩEcQuery("SELECT * FROM Win32_Processor");
      var e = new Enumerator (properties);
      document.write("<table border=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() {//主板信息
      var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
      var service = locator.ConnectServer(".");
      var properties = service.EⅩEcQuery("SELECT * FROM Win32_BaseBoard");
      var e = new Enumerator (properties);
      document.write("<table border=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() {//网络信息
      var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
      var service = locator.ConnectServer(".");
      var properties = service.EⅩEcQuery("SELECT * FROM win32_networkadapterconfiguration");
      var e = new Enumerator (properties);
      document.write("<table border=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() {//系统信息
      var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
      var service = locator.ConnectServer(".");
      var properties = service.EⅩEcQuery("SELECT * FROM Win32_ComputerSystem");
      var e = new Enumerator (properties);
      document.write("<table border=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="return Button1_onclick()">
            <INPUT id="Button3" type="button" value="网络信息" name="Button3" language=javascript onclick="return Button3_onclick()">
            <INPUT id="Button4" type="button" value="系统信息" name="Button4" language=javascript onclick="return Button4_onclick()">

      </body>
</html>

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

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

微软参考信息:
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部