收藏本页 | 设为主页 | RSS
LOGO

我就上乐乐吧

VB在硬件控制和系统底层应用方面较差,动辄就要API。而WMI是WindowsManagementInstrumentation(Windows管理工具)的缩写,是内置在操作系统中核心的管理支持技...

您当前的位置:首页 » 技术杂萃
全站公告
重要提示!

本站收集各类美图,以无LOGO原汁原味图为主!欢迎大家交流。
怕失联,请认准如下地址:
微博:传送门
土豆:传送门
电报:传送门
微信:superimagelove
花瓣:传送门
Q群1:231151757
Q群2:583138281
文件解压密码:593668.com
热心赞助

站内搜索
 
相关文章
热门文章
热搜词组
文章归档
友情链接
利用VBS获取U盘、主板、CPU序列号、网卡MAC地址

发布日期:2017-04-20  关键词: VBS

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地址,VBS,技术杂萃

6)至于查看"WinMgmts:"的详细对象(子集)、属性和方法,请用 WMI 测试器:wbemtest.exe。

利用VBS获取U盘、主板、CPU序列号、网卡MAC地址,VBS,技术杂萃

先点击连接,再使用枚举类去察看所有的。

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,如果需要获取所有磁盘【包括本地磁盘】的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
嗯,有了以上几个东西,基本上可以说电脑的基本信息都可以收集到了。

猜您喜欢:
Q群: 231151757微信:superimagelove 官网:www.593668.com