利用Zadig实现命令行安装USB驱动


前言

USB设备在Windows中可以通过枚举时响应回复特定字符串来匹配WINUSB的兼容性ID,可以实现免驱控制USB设备。但如果USB设备没有被识别成WinUSB设备,而且USB设备的固件不能更改的情况下,还可以利用Zadig来额外安装WinUSB驱动。


一、问题

USB设备枚举时因没有处理兼容ID导致无法使用Windows自带的WinUSB驱动,只能通过手动更新驱动强制指定USB驱动程序。

更新驱动程序 > 浏览我的电脑以查找驱动程序 > 让我从计算机的可用驱动程序列表中选取 > 显示所有设备 > WinUSB设备

USB设备没有兼容驱动程序
强制选择WinUSB驱动
但是手动更新WinUSB驱动步骤繁琐不适合批量操作,因为需要寻求命令行执行的更自动化的方式。

二、使用步骤

整体思路比较简单,由于Windows自带的winusb.inf只能适配WCID为WINUSB的兼容USB设备,因此我们只需要为目标USB的VID&PID所对应的设备安装上额外的驱动即可。

1.Zadig提取USB驱动

Zadig是一个安装通用USB驱动程序的Windows应用程序,可以从中提取出带自签名的WinUSB驱动(也可以用来直接安装WinUSB驱动)。

首先下载Zadig软件,插入USB设备,打开Zadig软件。Zadig软件会首先识别未知设备,大概率能识别到你没有驱动的USB设备,如果检查不对可以自己选中对应的USB设备。

选择提取驱动文件,提取出来的文件会存放在C:\Windows\User\xxx\usb_driver目录下,内容如图所示,已经包含不同系统位数的驱动文件。

Zadig提取驱动文件
usb_driver文件夹内容

2.安装证书

上一步提取出来的驱动文件还不能直接安装,因为即使文件签名了,但由于是自签名采用的证书并不被系统信任,需要将证书添加到系统受信任的根证书颁发机构。使用Zadig直接安装驱动文件同样也会添加证书,从它的开源代码也可以确认是有这一步操作。

但是程序是调用Windows的API来完成证书添加的工作,不方便我们命令行操作,因此我们可以将证书导出成文件,放在usb_driver文件夹方便在其他电脑上直接调用命令行完成USB驱动安装工作。

因为提取出来的文件中并不直接包含证书文件,需要先手动安装一遍证书,再将其导出成文件。

右键cat文件属性 > 数字签名 > 选中签名列表中签名 > 详细信息 > 查看证书 > 安装证书

安装证书
安装证书

3.导出证书

win+R执行mmc打开控制台,点击文件添加控制单元,选择证书管理单元。在证书管理单元处找到对应的证书,右键选择任务导出到usb_driver目录。

添加证书管理单元
导出证书
导出证书格式

4.命令行安装证书和驱动

安装证书到受信任的根证书颁发机构,xxx.cer为导出的证书文件

certutil.exe -addstore -f "Root" ".\xxx.cer"

安装驱动,xxx.inf为Zadig提取的USB驱动安装文件

pnputil.exe /add-driver .\xxx.inf /install

总结

通过Zadig软件提取目标USB设备的WinUSB驱动文件,再通过手动安装证书后提取出来证书文件。有了驱动文件和证书文件后就可以拷贝到其他电脑上直接使用命令行运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值