惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
Forbes - Security
Forbes - Security
WordPress大学
WordPress大学
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
Spread Privacy
Spread Privacy
D
Darknet – Hacking Tools, Hacker News & Cyber Security
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
P
Privacy International News Feed
A
About on SuperTechFans
T
Tailwind CSS Blog
I
InfoQ
S
Securelist
云风的 BLOG
云风的 BLOG
罗磊的独立博客
Recent Announcements
Recent Announcements
T
The Exploit Database - CXSecurity.com
B
Blog RSS Feed
V
Visual Studio Blog
Know Your Adversary
Know Your Adversary
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
腾讯CDC
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Full Disclosure
S
Secure Thoughts
博客园 - 司徒正美
J
Java Code Geeks
Y
Y Combinator Blog
Google Online Security Blog
Google Online Security Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
Help Net Security
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Project Zero
Project Zero
T
Tenable Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tor Project blog
MyScale Blog
MyScale Blog
Scott Helme
Scott Helme
小众软件
小众软件
K
Kaspersky official blog

博客园 - 五蕴非空

AI工具实践日记(二):在 OpenClaw 中调用 OpenCode 进行开发任务 AI工具实践日记(一):在树莓派上搭建OpenClaw,一个后端开发者的真实踩坑记录 .net core XML 解析帮助类 常用工具类 .net Core 同一接口不同实现的依赖注入 - 五蕴非空 大批量数据操作的性能优化方案 .net core 3.1 配置文件立即更新 为.net Core 3.0 WebApi 创建Linux守护进程 asp.net core 3.0 JObject The collection type 'Newtonsoft.Json.Linq.JObject' is not supported .net Core2.2 WebApi通过OAuth2.0实现微信登录 Asp.net导出Excel文件 Ext.Net 使用总结之GridPanel中的选中行 Ext.Net 使用总结之查询条件中的起始日期 Ext.Net 使用总结之GridPanel的删除事件 使用 NuGet 管理项目库 程序员技术练级攻略 ThoughtWorks(中国)程序员读书雷达 Sql 分割 键值对字符串 得到某值对应的名称 Ext.net 中日期格式的计算
JavaScript 获取客户端计算机硬件及系统信息
五蕴非空 · 2013-08-01 · via 博客园 - 五蕴非空

本来是想在网上找用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