You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程切换已安装设备驱动(优先采用Python)

编程切换已安装驱动的方法(优先Python)

手动操作步骤(对应设备管理器流程)

  • 右键点击设备,选择更新驱动程序
  • 选择浏览我的计算机以查找驱动程序软件
  • 选择让我从计算机上的可用驱动程序列表中选取
  • 从列表中选择所需驱动,点击下一步
  • 操作成功后,会收到提示Windows 已成功更新你的驱动程序

编程实现方案(Windows系统)

Python本身没有原生的驱动管理API,需借助Windows系统自带的工具(pnputil、devcon)或PowerShell命令,通过subprocess模块调用实现驱动切换。

前置准备

  1. 获取目标设备的硬件ID:打开设备管理器→右键目标设备→属性→详细信息→硬件ID(格式类似PCI\\VEN_XXXX&DEV_XXXX)
  2. 下载devcon工具:属于Windows Driver Kit(WDK)组件,需从官方渠道获取
  3. 确认驱动的INF文件路径:已安装的驱动INF通常位于C:\\Windows\\System32\\DriverStore\\FileRepository目录下

Python代码示例

import subprocess

# 替换为你的设备和驱动参数
DEVICE_HWID = "PCI\\VEN_XXXX&DEV_XXXX&SUBSYS_XXXXXX"
TARGET_DRIVER_INF = "C:\\Windows\\System32\\DriverStore\\FileRepository\\target_driver.inf"
CURRENT_DRIVER_INF = "C:\\Windows\\System32\\DriverStore\\FileRepository\\current_driver.inf"

def execute_cmd(cmd):
    """执行系统命令并返回结果"""
    try:
        result = subprocess.run(
            cmd,
            shell=True,
            check=True,
            capture_output=True,
            text=True,
            encoding="gbk"  # 适配Windows中文编码
        )
        print(f"执行成功:{result.stdout}")
        return True
    except subprocess.CalledProcessError as e:
        print(f"执行失败:{e.stderr}")
        return False

# 步骤1:禁用设备(部分驱动切换需此操作)
execute_cmd(f"devcon disable \"{DEVICE_HWID}\"")

# 步骤2:卸载当前驱动
execute_cmd(f"pnputil /delete-driver \"{CURRENT_DRIVER_INF}\" /uninstall")

# 步骤3:安装目标驱动
execute_cmd(f"pnputil /add-driver \"{TARGET_DRIVER_INF}\" /install")

# 步骤4:启用设备
execute_cmd(f"devcon enable \"{DEVICE_HWID}\"")

注意事项

  • 必须以管理员权限运行脚本,驱动操作需要系统级权限
  • pnputil是Windows自带工具,无需额外下载;devcon需单独获取并添加到系统PATH,或使用完整路径调用
  • 若不确定驱动INF路径,可通过PowerShell命令查询:Get-WindowsDriver -Online | Where-Object {$_.HardwareID -match "你的硬件ID"}
  • 部分设备无需禁用/启用即可切换驱动,可根据实际情况调整步骤

替代方案:WMI查询设备信息

使用Python的wmi模块可快速获取设备及驱动的详细信息,辅助驱动切换操作:

import wmi

wmi_client = wmi.WMI()
# 查询匹配硬件ID的设备
for device in wmi_client.Win32_PnPEntity():
    if DEVICE_HWID in device.HardwareID:
        print(f"设备名称:{device.Name}")
        print(f"当前驱动版本:{device.DriverVersion}")
        print(f"驱动提供商:{device.Manufacturer}")

内容的提问来源于stack exchange,提问作者user2927785

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:45:29