如何通过编程切换已安装设备驱动(优先采用Python)
编程切换已安装驱动的方法(优先Python)
手动操作步骤(对应设备管理器流程)
- 右键点击设备,选择更新驱动程序
- 选择浏览我的计算机以查找驱动程序软件
- 选择让我从计算机上的可用驱动程序列表中选取
- 从列表中选择所需驱动,点击下一步
- 操作成功后,会收到提示Windows 已成功更新你的驱动程序
编程实现方案(Windows系统)
Python本身没有原生的驱动管理API,需借助Windows系统自带的工具(pnputil、devcon)或PowerShell命令,通过subprocess模块调用实现驱动切换。
前置准备
- 获取目标设备的硬件ID:打开设备管理器→右键目标设备→属性→详细信息→硬件ID(格式类似
PCI\\VEN_XXXX&DEV_XXXX) - 下载
devcon工具:属于Windows Driver Kit(WDK)组件,需从官方渠道获取 - 确认驱动的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
相关产品推荐
相关产品推荐

