无忧启动论坛

标题: Python电脑信息查看工具(有时候硬盘序列号无法查询,不知道有没有大神指出原因,.... [打印本页]

作者: dvs909    时间: 2021-3-10 20:18
标题: Python电脑信息查看工具(有时候硬盘序列号无法查询,不知道有没有大神指出原因,....
本帖最后由 dvs909 于 2021-3-11 11:44 编辑

from tkinter import *
import wmi
import socket
c = wmi.WMI()
def hard_id():
     for physical_disk in c.Win32_DiskDrive():
         var=physical_disk.SerialNumber
     t.delete(1.0,END)
     t.insert("insert", "获取硬盘序列号:\n")
     var = t.insert('insert',var)
def cpu_id():
     for cpu in c.Win32_Processor():
         var = cpu.ProcessorId.strip()
     t.delete(1.0,END)
     t.insert("insert", "获取CPU序列号:\n")
     var = t.insert("insert",var)
def board_id():
     for board_id in c.Win32_BaseBoard():
         var = board_id.SerialNumber
         print(board_id.SerialNumber)
     t.delete(1.0,END)
     t.insert("insert", "获取主板序列号:\n")
     var = t.insert('insert',var)
def mac_id():
     t.delete(1.0,END)
     for mac in c.Win32_NetworkAdapter():
         while mac.MACAddress:
             var = mac.MACAddress
             print(mac.MACAddress)
             t.insert("insert", "\n")
             t.insert("insert", "获取MAC地址:\n")
             var = t.insert('insert',var)
             break
     #var = t.insert('insert',var) 获取最后一个
def bios_id():
     for bios_id in c.Win32_BIOS():
         var = bios_id.SerialNumber.strip()
         print(bios_id.SerialNumber.strip())
     t.delete(1.0,END)
     t.insert("insert", "获取BIOS序列号:\n")
     var = t.insert('insert',var)
def my_id():
     var = socket.getfqdn(socket.gethostname(  ))
     var1 = socket.gethostbyname(var)
     t.delete(1.0,END)
     t.insert("insert", "系统名:\n")
     t.insert('insert',var)
     t.insert("insert", "\n")
     t.insert("insert", "IP地址:\n")
     t.insert("end",var1)
win=Tk()
win.title('电脑信息查看工具')   
win.geometry('400x240')  
t = Text(win,width=30,height=2.5)
t.pack(side='left', fill='both',padx=1,pady=10)
btn = Button(win, text='获取硬盘序列号', width = 12, height = 1,command=hard_id)  
btn.pack(side='top',fill='both',pady = 5,expand='true')   
btn2 = Button(win, text='获取CPU序列号',width = 12, height = 1,command=cpu_id)  
btn2.pack(side='top',pady = 5,fill='x',expand='true')
btn3 = Button(win, text='获取主板序列号',width = 12, height = 1,command=board_id)  
btn3.pack(side='top',pady = 5,fill='x',expand='true')
btn4 = Button(win, text='获取MAC地址', width = 12, height = 1,command=mac_id)  
btn4.pack(side='top',pady = 5,fill='x',expand='true')
btn5 = Button(win, text='获取BIOS序列号',width = 12, height = 1,command=bios_id)  
btn5.pack(side='top',pady = 5,fill='x',expand='true')
btn6 = Button(win, text='获取IP及系统名',width = 12, height = 1,command=my_id)  
btn6.pack(side='top',pady = 5,fill='x',expand='true')
mainloop()

作者: MC阿虎    时间: 2021-3-11 07:24
感谢分享源码,学到了
作者: 20121010168    时间: 2021-3-11 10:04
多个硬盘的判断处理?
作者: dvs909    时间: 2021-3-11 10:09
20121010168 发表于 2021-3-11 10:04
多个硬盘的判断处理?

在哪里?
作者: 20121010168    时间: 2021-3-11 10:56
这种代码网上很多可以参考,写法也不少,试试直接这样

for physical_disk in c.Win32_DiskDrive():
    print(physical_disk.SerialNumber)


作者: 20121010168    时间: 2021-3-11 11:21
我这边试着是没有问题的




作者: dvs909    时间: 2021-3-11 11:53
本帖最后由 dvs909 于 2021-3-11 12:12 编辑
20121010168 发表于 2021-3-11 11:21
我这边试着是没有问题的

感谢你的回复,一般的电脑可以但是碰见一些个别机器出不来,physical_disk.SerialNumber要么是空,要么是202000202002020200200202001111,百思不得其解,也有可能是wmi的32位库的问题。我用你发的wmi explorer看看因为什么原因没有显示,谢谢提供的思路。

作者: dvs909    时间: 2021-3-12 12:52
MC阿虎 发表于 2021-3-11 07:24
感谢分享源码,学到了

我也初学者,共同进步。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3