注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

利用VBS获取U盘、主板、CPU序列号、网卡MAC地址  

2017-04-20 13:00:14|  分类: 操作系统 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
VB 在硬件控制和系统底层应用方面较差,动辄就要API。而WMI是 Windows Management Instrumentation (Windows管理工具)的缩写,是内置在操作系统中核心的管理支持技术,通过它可以访问、配置、管理和监视几乎所有的 Windows 资源。通过WMI ,用 VBS就可以获取的信息包括:计算机系统、磁盘、外围设备、事件日志、文件、文件夹、文件系统、网络组件、操作系统子系统、打印机、进程、注册表设置、安全性、服务、共享、SAM 用户和组等。该工具在Win2000以及WinNT下是标准工具,在Win9X下是扩展安装选项。
1)WMI 的对象使用路径的形式表示,如:\\.\root\cimv2:win32_service,第一个元素是目标计算机的名字(. 代表是本地系统),第二个元素是相应的WMI命名空间,第三个元素是相应的类名(对象)。
2)WMI的查询语言WQL【类似于SQL】:
Select pro1 from myclass(myclassevent)
例如:Select name , path from Win32_share
说明:列出所有共享的名称和路径
也支持使用通配符 * ,例如:Select * from Win32_share
关键字 Where 用于限定查询的范围
例:Select * from Win32_share where name=”Admin”
怎么样,是不是感觉跟SQL很类似。
3)WMI命名空间
1、root          作为所有其他名字的占位符;
2、root\default  与注册表操作有关的类;
3、root\security 与系统安全有关的类;
4、root\cimv2    从CIM派生的类,最常用的,代表我们最常用的工作环境。
4)使用
   1.建立一个到目标计算机上的 Windows 管理服务的连接
     Set WMI = GetObject("winmgmts:\\.\root\CIMV2")
   2.检索 WMI 托管资源实例
     Set Ps = WMI.InstancesOf("Win32_Processor")
   3.枚举检索得到集合的内容
      For Each P In Ps
          msgbox P.Name
      Next
   1、2两步可以合并为一步:Set Ps = GetObject("winmgmts:\\.\root\CIMV2").InstancesOf("Win32_Processor")
5)执行效果如下:
利用VBS获取U盘、主板、CPU序列号、网卡MAC地址 - sinsunson - 天朝布衣田中码农参上
6)至于查看"WinMgmts:"的详细对象(子集)、属性和方法,请用 WMI 测试器:wbemtest.exe。
利用VBS获取U盘、主板、CPU序列号、网卡MAC地址 - sinsunson - 天朝布衣田中码农参上
先点击连接,再使用枚举类去察看所有的。
7)那么接下来就来说说如果获取U盘的SN。

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set resets = objWMIService.ExecQuery("Select DeviceID from Win32_LogicalDisk Where DriveType = 2")
For Each reset In resets
RemovableDrive = reset.DeviceID
REM 判断能不能读,且U盘可能有多个,每个系列号用|分开
If CreateObject("Scripting.FileSystemObject").GetDrive(RemovableDrive).IsReady Then
If sn <> "" Then
sn = sn&"|"&CreateObject("Scripting.FileSystemObject").GetDrive(RemovableDrive).SerialNumber
Else
sn = CreateObject("Scripting.FileSystemObject").GetDrive(RemovableDrive).SerialNumber
End If
End If
Next
If sn <> "" Then
msgbox "U盘SN号:"&sn
Else
msgbox "系统未检测到U盘!"
End If

执行如上代码即可以得到U盘的SN,结果如下:
利用VBS获取U盘、主板、CPU序列号、网卡MAC地址 - sinsunson - 天朝布衣田中码农参上
如果需要获取所有磁盘【包括本地磁盘】的SN,那么就把"Where DriveType = 2"去除即可。
8)获取主板序列号

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set resets = objWMIService.ExecQuery("Select SerialNumber From Win32_BIOS")
For Each reset In resets
REM 主板就一个
msgbox "主板SN号:"&reset.SerialNumber
Exit For
Next

9)获取CPU序列号

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set resets = objWMIService.ExecQuery("Select ProcessorId from Win32_Processor")
For Each reset In resets
REM CPU不管多核几核实质还是一个
msgbox "CPU SN号:"&reset.ProcessorId
Exit For
Next

10)获取网卡MAC地址

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set resets = objWMIService.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))")
For Each reset In resets
REM 网卡可能有多个,也可能没有
If sn <> "" Then
sn = sn&"|"&reset.MACAddress
Else
sn = reset.MACAddress
End If
Next
If sn <> "" Then
msgbox "网卡MAC地址:"&sn
Else
msgbox "系统未检测到网卡!"
End If

嗯,有了以上几个东西,基本上可以说电脑的基本信息都可以收集到了。
 

  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017