无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3385|回复: 7
打印 上一主题 下一主题

Python电脑信息查看工具(有时候硬盘序列号无法查询,不知道有没有大神指出原因,....

  [复制链接]
跳转到指定楼层
1#
发表于 2021-3-10 20:18:42 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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()
8#
 楼主| 发表于 2021-3-12 12:52:15 | 只看该作者
MC阿虎 发表于 2021-3-11 07:24
感谢分享源码,学到了

我也初学者,共同进步。
回复

使用道具 举报

7#
 楼主| 发表于 2021-3-11 11:53:28 | 只看该作者
本帖最后由 dvs909 于 2021-3-11 12:12 编辑
20121010168 发表于 2021-3-11 11:21
我这边试着是没有问题的

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

使用道具 举报

6#
发表于 2021-3-11 11:21:56 | 只看该作者
我这边试着是没有问题的



回复

使用道具 举报

5#
发表于 2021-3-11 10:56:17 | 只看该作者
这种代码网上很多可以参考,写法也不少,试试直接这样

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

回复

使用道具 举报

4#
 楼主| 发表于 2021-3-11 10:09:48 | 只看该作者
20121010168 发表于 2021-3-11 10:04
多个硬盘的判断处理?

在哪里?
回复

使用道具 举报

3#
发表于 2021-3-11 10:04:59 | 只看该作者
多个硬盘的判断处理?
回复

使用道具 举报

2#
发表于 2021-3-11 07:24:46 | 只看该作者
感谢分享源码,学到了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-23 03:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表