在之前開發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(" ", ""))