tangtb

          Hadoop,SpringMVC,ExtJs,Struts2,Spring,SpringSecurity,Hibernate,Struts
          posts - 25, comments - 88, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
                                                        JavaScript 獲取客戶端計(jì)算機(jī)硬件及系統(tǒng)信息

          通過(guò)WMI來(lái)實(shí)現(xiàn)獲取客戶端計(jì)算機(jī)硬件及系統(tǒng)信息:
           1//系統(tǒng)信息獲取 
           2function getSysInfo()
           3    var locator = new ActiveXObject ("WbemScripting.SWbemLocator");  
           4    var service = locator.ConnectServer(".");  
           5    //CPU信息 
           6    var cpu = new Enumerator (service.ExecQuery("SELECT * FROM Win32_Processor")).item();  
           7    var cpuType=cpu.Name,hostName=cpu.SystemName; 
           8    //內(nèi)存信息 
           9    var memory = new Enumerator (service.ExecQuery("SELECT * FROM Win32_PhysicalMemory")); 
          10    for (var mem=[],i=0;!memory.atEnd();memory.moveNext()) mem[i++]={cap:memory.item().Capacity/1024/1024,speed:memory.item().Speed} 
          11    //系統(tǒng)信息 
          12    var system=new Enumerator (service.ExecQuery("SELECT * FROM Win32_ComputerSystem")).item(); 
          13    var physicMenCap=Math.ceil(system.TotalPhysicalMemory/1024/1024),curUser=system.UserName,cpuCount=system.NumberOfProcessors 
          14     
          15    return {cpuType:cpuType,cpuCount:cpuCount,hostName:hostName,curUser:curUser,memCap:physicMenCap,mem:mem} 
          16}
           

          代碼實(shí)現(xiàn)主要包括這幾部分:  

            1. 先通過(guò)new ActiveXObject ("WbemScripting.SWbemLocator"); 訪問(wèn)到WbemScripting對(duì)象。
            2. 通過(guò)locator.ConnectServer(".");連接我們本地電腦(.代表本地電腦,當(dāng)然
            3. 也可以訪問(wèn)其他計(jì)算機(jī))。
            4. 通過(guò)service.ExecQuery("SELECT * FROM Win32_Processor")這個(gè)類(lèi)似sql的語(yǔ)句(其實(shí)系統(tǒng)信息也是存儲(chǔ)在計(jì)算中一個(gè)類(lèi)似數(shù)據(jù)庫(kù)的文件中)獲取我們需要的對(duì)象的記錄集。
            5. 通過(guò)new Enumerator來(lái)創(chuàng)建一個(gè)可枚舉的對(duì)象,下面就可以遍歷取信息了。 

          注意:運(yùn)行的前提是要修改瀏覽器安全設(shè)置,“允許對(duì)未標(biāo)記為可安全執(zhí)行的ActiveX
          腳本的運(yùn)行”。

          這里主要取了CPU、內(nèi)存及系統(tǒng)用戶幾個(gè)信息,大家利用WMI的API或者借助JSEDIT獲取
          到更多的信息。下面列出了常用信息的類(lèi):

          Win32_Processor                        // CPU 處理器

          Win32_PhysicalMemory                   // 物理內(nèi)存

          Win32_Keyboard                         // 鍵盤(pán)

          Win32_PointingDevice                   // 點(diǎn)輸入設(shè)備,如鼠標(biāo)

          Win32_DiskDrive                        // 硬盤(pán)驅(qū)動(dòng)器

          Win32_CDROMDrive                       // 光盤(pán)驅(qū)動(dòng)器

          Win32_BaseBoard                        // 主板

          Win32_BIOS                             // BIOS 芯片

          Win32_ParallelPort                     // 并口

          Win32_SerialPort                       // 串口

          Win32_SoundDevice                      // 多媒體設(shè)置

          Win32_USBController                    // USB 控制器

          Win32_NetworkAdapter                   // 網(wǎng)絡(luò)適配器

          Win32_NetworkAdapterConfiguration      // 網(wǎng)絡(luò)適配器設(shè)置

          Win32_Printer                          // 打印機(jī)

          Win32_PrinterConfiguration             // 打印機(jī)設(shè)置

          Win32_PrintJob                         // 打印機(jī)任務(wù)

          Win32_TCPIPPrinterPort                 // 打印機(jī)端口

          Win32_POTSModem                        // MODEM

          Win32_POTSModemToSerialPort            // MODEM 端口

          Win32_DesktopMonitor                   // 顯示器

          Win32_VideoController                  // 顯卡細(xì)節(jié)。

          Win32_VideoSettings                    // 顯卡支持的顯示模式。

          Win32_TimeZone                         // 時(shí)區(qū)

          Win32_SystemDriver                     // 驅(qū)動(dòng)程序

          Win32_DiskPartition                    // 磁盤(pán)分區(qū)

          Win32_LogicalDisk                      // 邏輯磁盤(pán)

          Win32_LogicalMemoryConfiguration       // 邏輯內(nèi)存配置

          Win32_PageFile                         // 系統(tǒng)頁(yè)文件信息

          Win32_PageFileSetting                  // 頁(yè)文件設(shè)置

          Win32_BootConfiguration                // 系統(tǒng)啟動(dòng)配置

          Win32_OperatingSystem                  // 操作系統(tǒng)信息

          Win32_StartupCommand                   // 系統(tǒng)自動(dòng)啟動(dòng)程序

          Win32_Service                          // 系統(tǒng)安裝的服務(wù)

          Win32_Group                            // 系統(tǒng)管理組

          Win32_GroupUser                        // 系統(tǒng)組帳號(hào)

          Win32_UserAccount                      // 用戶帳號(hào)

          Win32_Process                          // 系統(tǒng)進(jìn)程

          Win32_Thread                           // 系統(tǒng)線程

          Win32_Share                            // 共享

          Win32_NetworkClient                    // 已安裝的網(wǎng)絡(luò)客戶端

          Win32_NetworkProtocol                  // 已安裝的網(wǎng)絡(luò)協(xié)議

          WMI Win32類(lèi)的完整信息及詳細(xì)列表請(qǐng)參考MSDN:
          http://msdn2.microsoft.com/en-us/library/aa394084(VS.85).aspx
          示例:

           1function button1_onclick() {//cpu 信息
           2      var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
           3      var service = locator.ConnectServer(".");
           4      var properties = service.ExecQuery("SELECT * FROM Win32_Processor");
           5      var e = new Enumerator (properties);
           6      document.write("<table border=1>");
           7      for (;!e.atEnd();e.moveNext ())
           8      {
           9            var p = e.item ();
          10            document.write("<tr>");
          11            document.write("<td>" + p.Caption + "</td>");
          12            document.write("<td>" + p.DeviceID + "</td>");
          13            document.write("<td>" + p.Name + "</td>");
          14            document.write("<td>" + p.CpuStatus + "</td>");
          15            document.write("<td>" + p.Availability + "</td>");
          16            document.write("<td>" + p.Level + "</td>");
          17            document.write("<td>" + p.ProcessorID + "</td>");
          18            document.write("<td>" + p.SystemName + "</td>");
          19            document.write("<td>" + p.ProcessorType + "</td>");
          20            document.write("</tr>");
          21      }

          22      document.write("</table>");
          23}

          24
          25function Button2_onclick() {//CD-ROM 信息
          26      var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
          27      var service = locator.ConnectServer(".");
          28      var properties = service.ExecQuery("SELECT * FROM Win32_CDROMDrive");
          29      var e = new Enumerator (properties);
          30      document.write("<table border=1>");
          31      for (;!e.atEnd();e.moveNext ())
          32      {
          33            var p = e.item ();
          34            document.write("<tr>");
          35            document.write("<td>" + p.Caption + "</td>");
          36            document.write("<td>" + p.Description + "</td>");
          37            document.write("<td>" + p.Drive + "</td>");
          38            document.write("<td>" + p.Status + "</td>");
          39            document.write("<td>" + p.MediaLoaded + "</td>");
          40            document.write("</tr>");
          41      }

          42      document.write("</table>");
          43}

          44
          45function Button3_onclick() {//鍵盤(pán)信息
          46      var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
          47      var service = locator.ConnectServer(".");
          48      var properties = service.ExecQuery("SELECT * FROM Win32_Keyboard");
          49      var e = new Enumerator (properties);
          50      document.write("<table border=1>");
          51      for (;!e.atEnd();e.moveNext ())
          52      {
          53            var p = e.item ();
          54            document.write("<tr>");
          55            document.write("<td>" + p.Description + "</td>");
          56            document.write("<td>" + p.Name + "</td>");
          57            document.write("<td>" + p.Status + "</td>");
          58            document.write("</tr>");
          59      }

          60      document.write("</table>");
          61}

          62
          63function Button4_onclick() {//主板信息
          64      var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
          65      var service = locator.ConnectServer(".");
          66      var properties = service.ExecQuery("SELECT * FROM Win32_BaseBoard");
          67      var e = new Enumerator (properties);
          68      document.write("<table border=1>");
          69      for (;!e.atEnd();e.moveNext ())
          70      {
          71            var p = e.item ();
          72            document.write("<tr>");
          73            document.write("<td>" + p.HostingBoard + "</td>");
          74            document.write("<td>" + p.Manufacturer + "</td>");
          75            document.write("<td>" + p.PoweredOn + "</td>");
          76            document.write("<td>" + p.Product + "</td>");
          77            document.write("<td>" + p.SerialNumber + "</td>");
          78            document.write("<td>" + p.Version + "</td>");
          79            document.write("</tr>");
          80      }

          81      document.write("</table>");
          82}

          83
          84


          評(píng)論

          # re: JavaScript 獲取客戶端計(jì)算機(jī)硬件及系統(tǒng)信息  回復(fù)  更多評(píng)論   

          2009-02-11 15:39 by 忘憂結(jié)
          可惜不能跨瀏覽器

          # re: JavaScript 獲取客戶端計(jì)算機(jī)硬件及系統(tǒng)信息  回復(fù)  更多評(píng)論   

          2009-02-12 10:07 by 于翔
          好強(qiáng)啊

          # re: JavaScript 獲取客戶端計(jì)算機(jī)硬件及系統(tǒng)信息  回復(fù)  更多評(píng)論   

          2009-02-18 09:16 by oliyo博主
          樓主好強(qiáng)啊,佩服

          帖子能轉(zhuǎn)不?先引用了啊

          # re: JavaScript 獲取客戶端計(jì)算機(jī)硬件及系統(tǒng)信息  回復(fù)  更多評(píng)論   

          2009-02-24 10:32 by 奧強(qiáng)
          好 好好

          # re: JavaScript 獲取客戶端計(jì)算機(jī)硬件及系統(tǒng)信息  回復(fù)  更多評(píng)論   

          2009-02-24 21:39 by 快樂(lè)布衣
          能否提供獲取B/S客戶端mac的信息,

          # re: JavaScript 獲取客戶端計(jì)算機(jī)硬件及系統(tǒng)信息  回復(fù)  更多評(píng)論   

          2009-03-10 18:16 by wangli_215
          看起來(lái)有點(diǎn)費(fèi)力,但從中了解了一些知識(shí),還是要對(duì)主人說(shuō)聲謝謝!

          # re: JavaScript 獲取客戶端計(jì)算機(jī)硬件及系統(tǒng)信息  回復(fù)  更多評(píng)論   

          2010-06-28 11:33 by 張久強(qiáng)
          謝謝了.看起來(lái)好復(fù)雜呀.

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 高尔夫| 尖扎县| 赣州市| 吴川市| 涪陵区| 太湖县| 星座| 兖州市| 娄烦县| 荣昌县| 潼关县| 通辽市| 安达市| 巴塘县| 封开县| 双牌县| 宜昌市| 双流县| 平邑县| 永泰县| 西青区| 青铜峡市| 翁牛特旗| 来安县| 鄂温| 麟游县| 龙山县| 清徐县| 岗巴县| 炎陵县| 鄂尔多斯市| 方山县| 堆龙德庆县| 泰和县| 尼勒克县| 太康县| 洱源县| 新河县| 东阳市| 南丹县| 石嘴山市|