您好,欢迎访问一九零五行业门户网

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(); for (;!e.atend();e.movenext ()) { var p = e.item (); document.write(); document.write( + p.caption + ); document.write( + p.deviceid + ); document.write( + p.name + ); document.write( + p.cpustatus + ); document.write( + p.availability + ); document.write( + p.level + ); document.write( + p.processorid + ); document.write( + p.systemname + ); document.write( + p.processortype + ); document.write(
); } document.write(
); } 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(); for (;!e.atend();e.movenext ()) { var p = e.item (); document.write(); document.write( + p.caption + ); document.write( + p.description + ); document.write( + p.drive + ); document.write( + p.status + ); document.write( + p.medialoaded + ); document.write(
); } document.write(
); } 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(); for (;!e.atend();e.movenext ()) { var p = e.item (); document.write(); document.write( + p.description + ); document.write( + p.name + ); document.write( + p.status + ); document.write(
); } document.write(
); } 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(); for (;!e.atend();e.movenext ()) { var p = e.item (); document.write(); document.write( + p.hostingboard + ); document.write( + p.manufacturer + ); document.write( + p.poweredon + ); document.write( + p.product + ); document.write( + p.serialnumber + ); document.write( + p.version + ); document.write(
); } document.write(
); }
另外,通过以下方式也可以获得系统的相关信息:
wmi scripting html
其实最关键的还是用到两个activex: 不过这两个activex都是系统自带,不用去下载或注册。 接下来的工作就是用脚本和activex交互 test class win32_networkadapterconfiguration : cim_setting { boolean arpalwayssourceroute; boolean arpuseethersnap; string caption; string databasepath; boolean deadgwdetectenabled; string defaultipgateway[]; uint8 defaulttos; uint8 defaultttl; string description; boolean dhcpenabled; datetime dhcpleaseexpires; datetime dhcpleaseobtained; string dhcpserver; string dnsdomain; string dnsdomainsuffixsearchorder[]; boolean dnsenabledforwinsresolution; string dnshostname; string dnsserversearchorder[]; boolean domaindnsregistrationenabled; uint32 forwardbuffermemory; boolean fulldnsregistrationenabled; uint16 gatewaycostmetric[]; uint8 igmplevel; uint32 index; uint32 interfaceindex; string ipaddress[]; uint32 ipconnectionmetric; boolean ipenabled; boolean ipfiltersecurityenabled; boolean ipportsecurityenabled; string ipsecpermitipprotocols[]; string ipsecpermittcpports[]; string ipsecpermitudpports[]; string ipsubnet[]; boolean ipusezerobroadcast; string ipxaddress; boolean ipxenabled; uint32 ipxframetype[]; uint32 ipxmediatype; string ipxnetworknumber[]; string ipxvirtualnetnumber; uint32 keepaliveinterval; uint32 keepalivetime; string macaddress; uint32 mtu; uint32 numforwardpackets; boolean pmtubhdetectenabled; boolean pmtudiscoveryenabled; string servicename; string settingid; uint32 tcpipnetbiosoptions; uint32 tcpmaxconnectretransmissions; uint32 tcpmaxdataretransmissions; uint32 tcpnumconnections; boolean tcpuserfc1122urgentpointer; uint16 tcpwindowsize; boolean winsenablelmhostslookup; string winshostlookupfile; string winsprimaryserver; string winsscopeid; string winssecondaryserver; };
其它类似信息

推荐信息