当前位置: 首页 > news >正文

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)

 

 

 

http://www.dtcms.com/a/298228.html

相关文章:

  • 飞算JavaAI“删除接口信息” 功能:3 步清理冗余接口,让管理效率翻倍
  • The Magic Mask for Android:解锁无限可能的安卓自定义套件
  • “Vibe Coding”:用自然语言对话,15分钟打造Python终端速读App
  • 正交实验设计法(心血整理总结)
  • 【第四章:大模型(LLM)】01.Embedding is all you need-(6)从 Word2Vec 到推荐/广告系统,再到大语言模型(LLM)
  • Linux下提权root权限
  • Asp.net core mvc中TagHelper的GetChildContentAsync和Content区别
  • GC8871刷式直流电机驱动器深度解析:3.6A驱动与内置电流检测技术
  • 虚拟地址-物理地址
  • leetcode110:判断平衡二叉树(两种思路对比)
  • 渗透高级-----测试复现(第三次作业)
  • 【GoLang#2】:基础入门(工具链 | 基础语法 | 内置函数)
  • 基于STM32汽车自动智能雨刷检测雨滴系统设计
  • 汽车免拆诊断案例 | 2010款奔驰E200 CGI车EPS OFF灯异常点亮
  • 数据类型选择:存储效率与查询性能的平衡
  • 【redis】缓存穿透、缓存击穿、缓存雪崩区别
  • Java学习第七十三部分——Redis
  • 前端面试问题
  • 安卓小说阅读软件推荐
  • 深入解析HBase如何保证强一致性:WAL日志与MVCC机制
  • [尚庭公寓]14-找房模块
  • 手写A2C(FrozenLake环境)
  • 直播美颜SDK动态贴纸模块开发指南:从人脸关键点识别到3D贴合
  • kiro的介绍和安装
  • 7.文件操作:让程序读写文件 [特殊字符]
  • CentOS 7.9 + GCC9 离线安装 IWYU(Include What You Use)
  • Linux库——库的制作和原理(1)_回顾动静态库、制作使用库
  • 【服务器与部署 26】配置管理实战:Ansible、Puppet自动化配置管理让运维效率提升10倍
  • 电磁兼容二:共模和差模问题
  • 【06】C#入门到精通——C# 多个 .cs文件项目 同一项目下添加多个 .cs文件