展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Python实现获取Windows设备信息

Python实现获取Windows设备信息

Windows 11
Windows 11

Windows 11 是微软全新操作系统,现代化界面,流畅操作体验,适用于学习、工作与日常生活。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

¥159
Windows 2026-08-22
正版软件 Windows 操作系统 Windows 11 Windows下载
立即下载

Python获取Windows设备信息可通过uuid/socket获取MAC地址,但易受虚拟网卡干扰或随机化;推荐使用wmic获取主板硬件UUID作为稳定标识;wmi模块可获取CPU、主板、硬盘等底层信息;platform和psutil适用于系统概况及动态数据,需注意管理员权限与隐私合规。

本文目录

    1. 基础实现(常用但有局限)

    用 Python 获取设备网络标识,最直接的办法就是借助 uuid 和 socket 这两个内置库。几行代码就能拿到 MAC 地址、主机名和 IP,看起来挺方便。

    Python实现获取Windows设备信息

    import uuid
    import socket
    
    # 获取 MAC 地址 (基于 getnode)
    mac = uuid.UUID(int=uuid.getnode()).hex[-12:].upper()
    
    # 获取主机名与 IP
    hostname = socket.getfqdn(socket.gethostname())
    ip_addr = socket.gethostbyname(hostname)
    
    print(f"MAC: {mac}")
    print(f"Host: {hostname}")
    print(f"IP: {ip_addr}")
    

    2. 核心问题:为什么 MAC 地址会变化?

    如果你在本地装了 VMware 或 VirtualBox,而且之前脚本跑得好好的,某天突然发现输出的 MAC 地址不一样了——别慌,原因其实挺简单。

    虚拟网卡的干扰

    uuid.getnode() 本质上就是去读硬件地址。但虚拟机一装,系统里就多了好几个虚拟网卡(比如 VMnet1、VMnet8)。

    • 多网卡竞争:脚本可能随机抓到一个虚拟网卡的 MAC,而不是你物理网卡(WiFi/以太网)的那个。
    • 优先级变动:一旦物理网卡断开(比如拔了网线),系统可能会把虚拟网卡当成默认接口返回。

    随机地址回退机制

    依照 RFC 4122,如果 uuid.getnode() 死活拿不到真实的硬件地址,它就会随机生成一个 48 位的值来应付。

    如何判断是不是随机地址?看 MAC 第一个字节的最低有效位。如果第二个字符是 1, 3, 5, 7, 9, B, D, F 中的一个,那就是随机生成的。

    3. 更稳定的替代方案:硬件 UUID

    如果目的就是唯一识别设备(比如做软件授权、设备指纹),那建议直接拿 Windows 主板的 UUID。这玩意儿不会因为网卡变动或虚拟机就翻脸。

    推荐方案 (Python 调用 WMIC)

    import subprocess
    
    def get_windows_uuid():
        try:
            # 执行 wmic 命令获取主板唯一标识
            cmd = 'wmic path win32_computersystemproduct get uuid'
            uuid_str = subprocess.check_output(cmd, shell=True).decode().split('\n')[1].strip()
            return uuid_str
        except Exception as e:
            return f"Error: {e}"
    
    print(f"设备硬件 UUID: {get_windows_uuid()}")
    

    4. 总结与建议

    标识符稳定性适用场景风险
    MAC 地址一般网络通信、局域网识别易受虚拟机、多网卡、随机化影响
    主机名低内部网络标识用户可随时更改
    硬件 UUID极高软件授权、设备指纹需系统权限(通常 cmd 即可)

    补充两点实操建议:

    • 在 Windows 上跑 Python 脚本,记得确认 Python 已加到系统变量 PATH 里。
    • 如果非要拿到物理网卡的 MAC,可以借助 psutil 库遍历所有网卡,把名字里带 "VMware" 或 "Virtual" 的过滤掉。

    5. 知识扩展

    在 Windows 环境里获取设备信息,最高效的手段其实是 WMI,它可以直接捅到系统底层硬件和软件的配置。Python 的 platform 和 psutil 模块则可以作为补充,捞一些基础的系统信息。

    下面这张对比表,能帮你快速定位哪个方法最适合手头的任务:

    主要实现方法对比

    方法/工具核心原理主要优势潜在限制使用建议
    WMI (wmi库)通过封装好的 API 访问 Windows 原生管理接口。功能最强大,能获取几乎所有系统信息(软件/硬件/配置)。需要安装第三方库。首选,用于获取CPU、主板、硬盘等底层硬件信息。
    Win32 API (pywin32库)直接调用 Windows API,交互层级更低。灵活,能实现一些 WMI 不便或无法完成的操作。安装相对复杂,需要pywin32库。高级或特定场景的补充。
    系统组件 (platform模块)Python 内置,跨平台,无需安装。无额外依赖,代码简单。功能有限,主要用于操作系统版本、计算机名、处理器架构等基础信息。获取通用系统信息,或用于跨平台代码中判断操作系统类型。
    subprocess + WMIC调用 Windows 命令行工具 wmic,解析其输出。零额外依赖(除 subprocess)。输出为文本,需要解析,且 wmic 可能在未来的 Windows 版本中被弃用。需要基本的系统信息,但不能或不想安装 wmi 库的轻量级场景。
    跨平台库 (psutil等)第三方库,提供跨平台的系统信息获取功能。跨平台(Windows/Linux/macOS),API 统一,获取实时数据能力强。可能获取不到某些特定硬件的底层序列号。需要监控CPU、内存、磁盘、网络等实时资源时作为重要补充。

    详细代码示例及解析

    准备工作:安装依赖库

    非内置模块需要先用 pip 装好。建议用 python -m pip 保证安装到正确的 Python 环境。

    # 建议使用 python -m pip 来确保安装到正确的 Python 环境
    python -m pip install wmi pywin32 psutil

    下面给出两种主流的实现方式,附带核心代码。

    方式一:使用 wmi 模块(获取CPU、主板、硬盘信息)

    这是 Windows 硬件信息获取最常用也是最强的路子。

    import wmi
    try:
        # 初始化WMI客户端
        c = wmi.WMI()
    except wmi.x_wmi as e:
        print(f"初始化WMI失败: {e}")
        exit()
    # 1. 获取CPU信息
    print("\n[CPU信息]")
    for cpu in c.Win32_Processor():
        # .Caption 或 .Name 通常包含CPU的完整型号
        print(f"  型号: {cpu.Name.strip()}")
        print(f"  核心数: {cpu.NumberOfCores}")
        print(f"  线程数: {cpu.NumberOfLogicalProcessors}")
    # 2. 获取主板信息
    print("\n[主板信息]")
    for board in c.Win32_BaseBoard():
        # .Product 通常是主板的型号
        print(f"  型号: {board.Product}")
        # .Manufacturer 是制造商
        print(f"  制造商: {board.Manufacturer}")
    # 3. 获取硬盘信息
    print("\n[硬盘信息]")
    for disk in c.Win32_DiskDrive():
        # .Model 是硬盘型号,.SerialNumber 是唯一的序列号
        print(f"  型号: {disk.Model}")
        print(f"  序列号: {disk.SerialNumber}")
        print(f"  大小: {int(disk.Size) // (1024**3)} GB")

    代码解析:

    • c = wmi.WMI() 建立与 Windows 管理规范的连接,后续所有查询都靠它。
    • Win32_Processor、Win32_BaseBoard、Win32_DiskDrive 是 WMI 里查询 CPU、主板、硬盘的类。
    • 换个类名就能查别的硬件,比如 Win32_PhysicalMemory 查内存条。

    方式二:结合 platform 和 psutil 获取系统概况

    这两个库主要用来拿系统概要信息和实时运行状态,跨平台能力很强。

    import psutil
    import platform
    print("[操作系统信息]")
    # platform.system() 获取操作系统名称,如 'Windows', 'Linux'[reference:12]
    print(f"  系统: {platform.system()}")
    # platform.release() 获取操作系统的主版本号[reference:13]
    print(f"  版本: {platform.release()}")
    # platform.processor() 获取处理器的信息字符串
    print(f"  处理器标识: {platform.processor()}")
    print(f"  计算机名: {platform.node()}")
    print(f"  系统架构: {platform.machine()}")
    print("\n[系统运行状态]")
    # psutil.virtual_memory().total 获取系统总内存,单位是字节,需要转换为合适的单位。
    total_memory = psutil.virtual_memory().total
    print(f"  总内存: {total_memory // (1024**3)} GB")
    # psutil.disk_usage('/') 获取根目录的磁盘使用情况。你可以改变路径来查看其他盘符。
    disk = psutil.disk_usage('/')
    print(f"  磁盘 (C:): 总计 {disk.total // (1024**3)}GB, 已用 {disk.used // (1024**3)}GB")

    关键点:

    • platform 模块是跨平台系统信息的基础。
    • psutil 在动态数据上很出色,比如 psutil.virtual_memory() 和 psutil.disk_usage() 能实时反映内存和磁盘使用情况。

    方式三:使用 uuid 模块生成唯一设备标识符

    这个方法不是列硬件清单,而是生成一个相对稳定的设备唯一码,常见于软件授权场景。

    import uuid
    # 获取计算机的MAC地址并生成一个UUID[reference:16]
    node_uuid = uuid.UUID(int=uuid.getnode())
    # 取UUID的后12位作为机器码
    machine_code = node_uuid.hex[-12:]
    print(f"\n[生成的机器码]")
    print(f"  唯一ID: {machine_code}")

    核心要点:该方法依赖 MAC 地址,网卡变或 MAC 被改,ID 就会变。想更稳定,可以调系统工具(如 wmic csproduct get uuid)拿主板 UUID。

    注意事项与安全警示

    代码写得好,还要注意错误处理和权限——这是让程序靠谱的常识。

    • 管理员权限:有些硬件信息(比如硬盘序列号)必须用管理员权限跑脚本才能拿到,否则可能返回 None 或直接报错。
    • 虚拟机环境:在虚拟机里拿到的硬件序列号往往是虚拟化软件模拟的固定值,多台机器可能会一模一样。
    • 错误处理:务必用 try...except 包住 WMI 初始化、注册表查询等容易出错的步骤。
    • 隐私合规:收集、传输硬件信息之前,必须告知用户并征得同意,否则容易踩隐私法规的红线。
    • 兼容性预案:wmic 命令行工具可能在后续 Windows 版本中被移除。建议把 wmic 调用封装成函数,后续方便平滑迁移到 Get-WmiObject 等 PowerShell 命令。

    以上几种方法各有侧重,实际开发时可以根据场景灵活选用。如果需要针对特定硬件(比如内存条、显卡)的查询,可以进一步细化代码。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Windows
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?