zoukankan      html  css  js  c++  java
  • JavaScript 获取客户端计算机硬件及系统信息

    本来是想在网上找用Javascript获取打印机信息的方法,但是没想到找到了更多有用的信息,特此记录下来。


    通过WMI来实现获取客户端计算机硬件及系统信息:

    //系统信息获取 
    function getSysInfo(){ 
     var locator = new ActiveXObject ("WbemScripting.SWbemLocator"); 
     var service = locator.ConnectServer("."); 
     //CPU信息 
     var cpu = new Enumerator (service.ExecQuery("SELECT * FROM Win32_Processor")).item();
     var cpuType=cpu.Name,hostName=cpu.SystemName; 
     //内存信息 
     var memory = new Enumerator (service.ExecQuery("SELECT * FROM Win32_PhysicalMemory"));
     for (var mem=[],i=0; !memory.atEnd(); memory.moveNext()) mem[i++]={cap:memory.item().Capacity/1024/1024,speed:memory.item().Speed}
     //系统信息 
     var system=new Enumerator (service.ExecQuery("SELECT * FROM Win32_ComputerSystem")).item();
     var physicMenCap=Math.ceil(system.TotalPhysicalMemory/1024/1024),curUser=system.UserName,cpuCount=system.NumberOfProcessors
    
     return {cpuType:cpuType,cpuCount:cpuCount,hostName:hostName,curUser:curUser,memCap:physicMenCap,mem:mem}
    }

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

    先通过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
    示例:
    function button1_onclick() {//cpu 信息
     var locator = new ActiveXObject ("WbemScripting.SWbemLocator"); 
     var service = locator.ConnectServer("."); 
     var properties = service.ExecQuery("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 Button2_onclick() {//CD-ROM 信息
     var locator = new ActiveXObject ("WbemScripting.SWbemLocator"); 
     var service = locator.ConnectServer("."); 
     var properties = service.ExecQuery("SELECT * FROM Win32_CDROMDrive"); 
     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.Description + "</td>"); 
     document.write("<td>" + p.Drive + "</td>"); 
     document.write("<td>" + p.Status + "</td>"); 
     document.write("<td>" + p.MediaLoaded + "</td>"); 
     document.write("</tr>"); 
     }
     document.write("</table>"); 
    }
    
    function Button3_onclick() {//键盘信息
     var locator = new ActiveXObject ("WbemScripting.SWbemLocator"); 
     var service = locator.ConnectServer("."); 
     var properties = service.ExecQuery("SELECT * FROM Win32_Keyboard"); 
     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.Description + "</td>"); 
     document.write("<td>" + p.Name + "</td>"); 
     document.write("<td>" + p.Status + "</td>"); 
     document.write("</tr>"); 
     }
     document.write("</table>"); 
    }
    
    function Button4_onclick() {//主板信息
     var locator = new ActiveXObject ("WbemScripting.SWbemLocator"); 
     var service = locator.ConnectServer("."); 
     var properties = service.ExecQuery("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>"); 
    }
    //获取本机IP
    
    function GetLocalIPAddress(){
    var obj = null; 
    var rslt = ""; 
    try 
    { 
    obj = new ActiveXObject("rcbdyctl.Setting"); 
    rslt = obj.GetIPAddress; 
    obj = null; 
    } 
    catch(e) 
    { 
    //异常发生 
    } 
    //return rslt;
    alert(rslt) 
    }

    原文链接:http://www.cnblogs.com/zengwei/archive/2009/04/16/1436991.html
  • 相关阅读:
    MSDN Magazine搞错了
    Visual Studio 2005中设置调试符号(Debug Symbols)
    BCB 6的问题
    吴裕雄天生自然Spring Boot使用Spring Data JPA实现人与身份证的一对一关系映射
    吴裕雄天生自然Spring BootSpring Data JPA
    吴裕雄天生自然Spring BootSpring Boot对JSP的支持
    吴裕雄天生自然Spring BootSpring Boot的异常统一处理
    吴裕雄天生自然Spring Boot使用Spring Data JPA实现Author与Article的一对多关系映射
    吴裕雄天生自然Spring Boot解决 Error creating bean with name 'entityManagerFactory' defined in class path resource
    吴裕雄天生自然Spring Boot@ExceptionHandler注解和@ControllerAdvice注解
  • 原文地址:https://www.cnblogs.com/rsls/p/4364100.html
Copyright © 2011-2022 走看看