用vbs脚本获取网卡MAC,CPUID,硬盘序列号的实现代码
先贴上一段实用的VBS脚本——分配静态IP地址的代码。 ' Assign a Static IP Address strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=imperson
先贴上一段实用的VBS脚本——分配静态IP地址的代码。

' Assign a Static IP Address
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
strIPAddress = Array("192.168.6.98")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.6.1")
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WScript.Echo "The IP address has been changed."
Else
WScript.Echo "The IP address could not be changed."
End If
Next
这段脚本通过WMI连接本地计算机,抓取所有启用状态的网络适配器。然后,设置你指定的IP地址(例如192.168.6.98)、子网掩码(255.255.255.0)以及默认网关(192.168.6.1)。如果执行成功,会返回一条“IP已更改”的消息;反之,则会提示错误。适合用来批量管理或自动配置网络环境。
接下来是检测U盘的实战代码。这里提供了两种思路,分别利用了FileSystemObject和WMI。
检测U盘 方法一
'方法1
Sub Auto_Open()
On Error Resume Next
Set fs = CreateObject("Scripting.FileSystemObject")
StrDrive = "B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
StrDriveArray = Split(StrDrive, ",")
For StartPos = 1 To UBound(StrDriveArray)
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(StrDriveArray(StartPos) & ":\")))
If d.DriveType = 1 Then
s = d.SerialNumber
Exit For
End If
Next
If s <> "" Then
Range("Sheet1!d8") = s
Else
Range("Sheet1!d8") = "系统未检测到U盘!"
End If
Set d = Nothing
Set fs = Nothing
Call QueryOther
End Sub
'方法2
Sub DetectUdisk()
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\.rootcimv2")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType = 2")
For Each objDisk In colDisks
RemovableDrive = objDisk.DeviceID
If CreateObject("Scripting.FileSystemObject").GetDrive(RemovableDrive).IsReady Then
s = CreateObject("Scripting.FileSystemObject").GetDrive(RemovableDrive).SerialNumber
Exit For
End If
Next
If s <> "" Then
Range("Sheet1!d8") = s
Else
Range("Sheet1!d8") = "系统未检测到U盘!"
End If
Call QueryOther
End Sub
Sub QueryOther()
'2007.1.19 更新,获取主板序列号, CPUID, 网卡MAC地址
Set objWMIService = GetObject("winmgmts:\.rootcimv2")
Set colItems = objWMIService.ExecQuery("Select SerialNumber From Win32_BIOS")
For Each objItem In colItems
Range("Sheet1!E8") = objItem.SerialNumber
Exit For
Next
Set colItems = Nothing
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objItem In colItems
Range("Sheet1!F8") = objItem.ProcessorId
Exit For
Next
Set colItems = Nothing
Set colItems = objWMIService.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))")
For Each objItem In colItems
Range("Sheet1!G8") = objItem.MACAddress
Exit For
Next
Set colItems = Nothing
End Sub
第一种方法偏“暴力”但很直接——它会遍历从B到Z的所有盘符,查找驱动器类型为可移动存储(DriveType=1)的设备,然后读取其序列号。如果找到了,就把结果写到Sheet1的D8单元格;如果没找到,就提示“系统未检测到U盘!”。而第二种方法则显得更“斯文”——它通过WMI查询Win32_LogicalDisk里所有DriveType为2(可移动磁盘)的逻辑盘,再借助FileSystemObject判断是否就绪,并获取序列号。两者最后都会调用同一个子程序QueryOther。
那么这个QueryOther子程序是干什么用的呢?它负责一次性获取系统的关键硬件信息:主板序列号(来自Win32_BIOS)、CPU的ProcessorId,以及第一个非Microsoft制造商的网卡的MAC地址。这些数据会被分别写入Sheet1的E8、F8、G8单元格。可以说,这是一个非常实用的硬件信息采集小工具,特别适合做设备绑定、软件授权或者资产管理。
以上即是本篇分享的VBS脚本实用代码段,涵盖了静态IP分配和系统硬件信息检测两大功能。需要的朋友直接拿去参考即可。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















