vmi:獲取 windows 系統硬體資訊

luckzack發表於2024-05-07

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

相關文章