vmi:获取 windows 系统硬件信息
在之前开发windows应用程序时,为了实现一个注册码只能注册一台设备(只要不换机器一台电脑的设备序列号是唯一的),这时需要获取使用者电脑硬件的各种常见信息,如主板信息,cpu信息等,经过查询,模块vmi
可以实现我的需求。
vim简介
WMI是一项核心的Windows管理技术,WMI作为一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源,比如用户可以在远程计算机器上启动一个进程;设定一个在特定日期和时间运行的进程;远程启动计算机;获得本地或远程计算机的已安装程序列表;查询本地或远程计算机的Windows事件日志等等。
安装
pip install vmi
使用
# 获取当前网卡信息
import wmi
w = wmi.WMI()
for n in w.Win32_NetworkAdapter():
if n.MACADDress is None or n.PhysicalAdapter is False:
continue
mac = n.MACADDress
name = n.Name
if "PCI" in name:
# 有线网卡
print("%s: %s" % (name, mac))
# 获取当前在使用的网卡mac地址
import wmi
s = wmi.WMI()
network = []
for nw in s.Win32_NetworkAdapterConfiguration(IPEnabled=1):
network.append(
{
"MAC": nw.MACAddress,
"ip": nw.IPAddress
}
)
print(network)
# 获取cpu序列号
for cpu in c.Win32_Processor():
print cpu.ProcessorId.strip()
# 获取主板序列号
for board_id in c.Win32_BaseBoard():
# print(board_id.SerialNumber)
# 获取BIOS序列号
for bios_id in c.Win32_BIOS():
# print(bios_id.SerialNumber.strip)
# 获取硬盘序列号
disk_sn_list = []
for physical_disk in c.Win32_DiskDrive():
# print(physical_disk.SerialNumber)
# print(physical_disk.SerialNumber.replace(" ", ""))
disk_sn_list.append(physical_disk.SerialNumber.replace(" ", ""))