linusb + Zadig 2.x - 用户指南
Zadig 2.x - 用户指南
(2021 年 8 月 4 日 00:00:00)
目录
基本用法
高级用法
zadig.ini 文件示例
zadig 预设设备配置文件示例
防止替换 Zadig libusbK USB 设备驱动程序
问题
原因
解决方法
可能的预防措施
过程和诊断详情
基本用法
在最简单的操作模式下,Zadig 用于为尚未安装兼容 libusb 驱动的设备安装该驱动。
以下是典型驱动安装的概述:
启动 Zadig 时,首先会看到用户账户控制提示(如下所示)。这是因为该应用程序需要以管理员权限运行。要能够安装驱动程序,应选择 “是”。
界面示例:用户账户控制提示
应用程序运行后,USB 设备会出现在下拉列表中(点击下拉列表可查看所有设备)。也可在 Zadig 运行后插入 USB 设备,列表会自动刷新。建议只保留目标设备,拔掉其他 USB 设备。
界面示例:Zadig 设备选择界面

供应商 ID(“VID”,此处为 “0x045E”)、产品 ID(“PID”,此处为 “0x289”)及(可选)接口 ID(“MI”)显示在 “USB ID” 下方。鼠标悬停在供应商 ID 上可显示供应商全名,若名称未知,会出现向 USB ID 库报告的按钮。
救命!我的设备没有出现在列表中!!
若设备未在列表中,可能已安装驱动,替换时需谨慎(可能导致其他应用或系统无法访问)。例如,替换 USB 键盘 / 鼠标驱动后,仅能用于自定义应用,无法在 Windows 中输入。
界面示例:已安装驱动的设备显示

选)选中设备后,点击 “编辑” 可修改名称(将显示在设备管理器等位置)。可根据应用类型选择驱动:“WinUSB”“libusb-win32/libusb0”“libusbK”(均适用于 libusb 或 LibusbDotNet,“libusb-win32” 适用于同名库应用)。
点击 “安装驱动” 按钮(标签随操作变化)执行安装,也可通过按钮拆分部分选择其他操作(提取驱动、一次性安装 WCID 驱动等)。
部分 Windows 7 版本会显示安全警报:
界面示例:Windows 安全警报

此时应安装微软 KB2921916 补丁,或选择 “无论如何都要安装此驱动程序软件”。
安装过程通常几秒,若需禁用系统还原点可能耗时更长,完成后会通知。
界面示例:驱动安装成功界面

驱动以绿色显示(如 WinUSB),表明安装成功,可用于基于 libusb 的应用。
高级用法
高级用户可使用以下功能:
高级模式(选项→高级模式)
显示额外信息,可选择文件提取目录。
通过 INI 文件设置选项
所有菜单选项可通过 zadig.ini 设置,启动时读取。示例见下文。
信息 / 日志
高级模式下,通过 “选项→日志级别” 选择日志级别(用于了解安装过程或报告问题)。
自动创建 / 签名目录文件(选项→创建目录文件 / 选项→签名目录并安装自动生成的证书)
启用后,Zadig 自动生成目录(.cat)文件,用自签名证书签名,提取时安装到本机。
对列出的设备进行精细控制(选项→列出所有设备 / 选项→忽略集线器或复合设备父项)
默认只列未安装驱动的设备,可通过选项替换现有驱动(包括 USB 集线器、复合设备父项)。
创建新设备(设备→创建新设备)
为未插入但已知信息(VID、PID 等)的设备安装驱动,下次插入时可用。
打开预设(设备→加载预设设备)
类似 “创建新设备”,但使用 zadig 预设设备配置文件(示例见下文)。
zadig.ini 文件示例
# Zadig的示例ini文件 [general] # 在高级模式下启动应用程序(默认 = false) advanced_mode = true # 成功安装驱动程序后退出应用程序(默认 = false) exit_on_success = false # 日志级别(0=调试,1=信息,2=警告,3=错误) log_level = 0
[device] # 列出所有设备,包括已经安装驱动程序的设备(默认 = false) list_all = true # 列出所有设备时包括集线器和复合设备父项(默认 = false) include_hubs = true # 从USB设备描述中修剪尾随空格(默认 = false) trim_whitespaces = true
[driver] # 选择以下作为默认安装的驱动程序: # WinUSB = 0,libusb0.sys = 1,libusbK.sys = 2,自定义 = 3(默认 = WinUSB) default_driver = 2 # 仅提取驱动程序文件,不安装(默认 = false) extract_only = false # 提取驱动程序文件的默认目标目录(默认 = "C:\\usb_driver") default_dir = "C:\\usb_driver" [security] # 如果嵌入,将以下证书安装到受信任的发布者存储中 # install_cert = "mycert.cer" # 如果设置为true,将静默安装上面提供的证书(不推荐) # disable_cert_install_warning = false |
zadig 预设设备配置文件示例
# 这是Zadig的示例预设设备配置 [device] Description = "示例设备" VID = 0xABCD PID = 0x1234 MI = 0x01 # 你也可以如下强制设置特定的设备接口GUID # GUID = "{11111111-2222-3333-4444-555555555555}" |
防止替换 Zadig libusbK USB 设备驱动程序
问题
用 Zadig 替换为 libusbK 后,Windows 可能在重启或拔插设备后回滚驱动,Windows 更新也可能导致回滚或替换为较新驱动。
原因
Windows 持续确保设备安装 “最佳” 驱动,“最佳” 由驱动日期、版本等决定(称为 “排名”)。同排名时,最新日期的驱动优先。开机、重启或设备连接时,即插即用管理器扫描并分配最佳驱动,日期晚于 libusbK 的驱动可能导致回滚。
解决方法
通过 pnputil 删除日期较新的竞争驱动:
pnputil /delete-driver <example.inf> /uninstall |
需确定 <example.inf>(通常是 oem####.inf):
设备管理器→[设备]→属性→事件:查看驱动事件,识别关联的 oem####.inf
若为当前驱动:设备管理器→[设备]→属性→详细信息→属性:Inf 名称
执行命令后,C:\Windows\INF 中的.inf 及 C:\Windows\System32\DriverStore\FileRepository\ 中的驱动文件夹会被删除。
若需在 libusbK 和制造商驱动间切换,需手动管理(不理想)。注意:.inf 文件日期无法直接编辑(受.cat 文件签名绑定),删除.cat 文件可强制出现安装提示。
可能的预防措施
按文档阻止特定设备的 Windows 更新驱动安装(仅当制造商驱动被 Windows 更新挂钩时需此操作,未验证)。
过程和诊断详情
注册表检查:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\,查找 VID_PID_条目,查看服务(WinUSB/libusbK)及 mfg 条目(对应 C:\Windows\INF\ 的 oem###.inf)。
驱动存储检查:C:\Windows\System32\DriverStore\FileRepository\ 中制造商设备对应的文件夹。
日志位置:C:\Windows\INF\setupapi.dev.log,示例摘录如下:
>>> [设备安装(硬件启动)- USB\VID_2457&PID_104B\7&13b69c22&0&3] >>> 部分开始于2020/10/02 14:13:19.318 utl: {选择驱动程序 - USB\VID_2457&PID_104B\7&13b69c22&0&3} 14:13:19.364 utl: 驱动程序节点: utl: 状态 - 已选择 utl: 驱动程序INF - oem37.inf(C:\WINDOWS\System32\DriverStore\FileRepository\ooi_flamenir.inf_amd64_c49d37bc221e3c4a\ooi_flamenir.inf) utl: 类GUID - {bad36dab-a3d2-4a0e-8b2e-da36202187d4} utl: 驱动程序版本 - 2016/04/11,1.2.0.0 utl: 配置 - USB\VID_2457&PID_104B utl: 驱动程序排名 - 00FF0001 utl: 签名者分数 - WHQL (0D000005) utl: 驱动程序节点: utl: 状态 - 被超越 utl: 驱动程序INF - oem48.inf(C:\WINDOWS\System32\DriverStore\FileRepository\ocean_optics_flame-nir128.inf_amd64_9d418d0d07e56955\ocean_optics_flame-nir128.inf) utl: 类GUID - {ecfb0cfd-74c4-4f52-bbf7-343461cd72ac} utl: 驱动程序版本 - 2014/11/30,3.0.7.0 utl: 配置 - USB\VID_2457&PID_104B [LUsbK_Device.NTamd64] utl: 驱动程序排名 - 00FF0001 utl: 签名者分数 - Authenticode (0F000000) |