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

Windows 7已签名USB驱动仍提示‘无法验证发布者’求助

解决Windows 7 x64驱动安装“无法验证发布者”问题

针对你遇到的问题,结合你提供的信息,我整理了几个关键排查点和解决方案,按优先级排序:

1. 修正INF与CAT文件名不匹配的问题(最可能的根源)

你的app.inf文件中明确指定了CatalogFile=%MFGFILENAME%.cat,而MFGFILENAME定义为"XYZDevice",意味着系统会寻找XYZDevice.cat作为签名目录文件,但你生成的是app.cat——这会导致Windows在安装时无法关联INF和对应的签名文件,直接触发发布者验证警告。

修复步骤:

  • 重新生成匹配的CAT文件:
    Inf2Cat /driver:"C:\CodeSigning" /os:7_X64,7_X86 /catfile:XYZDevice.cat
    
  • 用新生成的XYZDevice.cat重新执行签名命令:
    signtool sign /v /ac "C:\CodeSigning\DigiCert High Assurance EV Root CA.crt" /a /tr http://timestamp.digicert.com /td sha256 /fd sha256 "C:\CodeSigning\XYZDevice.cat"
    

2. 验证签名链与时间戳有效性

即使CAT文件签名成功,也需要确认签名链完整且时间戳有效,这是Windows 7 SHA256签名验证的核心要求。

验证命令:

signtool verify /v /pa /tw "C:\CodeSigning\XYZDevice.cat"
  • /pa:验证符合驱动签名要求的证书链(适配Windows 7的交叉签名规则)
  • /tw:检查时间戳是否有效(防止证书过期后签名失效)

正常输出应该包含:

  • Successfully verified <文件路径>
  • 签名算法显示为sha256RSA
  • 证书链完整,没有“无法构建证书链”或“时间戳无效”的警告

3. 确认KB3033929补丁的有效性

Windows 7 SP1默认不支持SHA256内核驱动签名,KB3033929是必需补丁,但需确保它真的生效:

  • 打开控制面板 > 程序和功能 > 查看已安装的更新,找到KB3033929并确认状态为“已安装”
  • 如果已安装仍有问题,尝试卸载后重新安装补丁,然后重启系统

4. 检查证书安装位置是否正确

你安装了证书,但必须确保证书被导入到本地计算机的正确存储中(当前用户存储对系统级驱动安装无效):

  1. 按下Win+R输入mmc打开控制台
  2. 点击文件 > 添加/删除管理单元,选择“证书”并添加,选择“本地计算机”后完成
  3. 展开受信任的根证书颁发机构 > 证书,确认DigiCert High Assurance EV Root CA存在
  4. 展开受信任的发布者 > 证书,确认你的代码签名证书(非根证书)存在
  5. 若缺失,右键对应存储 → 所有任务 → 导入,选择对应的证书文件完成导入

5. 检查驱动包文件的完整性

确保CAT文件包含驱动包中所有文件的哈希(INF、两个CoInstaller DLL):

  • 重新生成CAT时,确保C:\CodeSigning目录下同时存在app.inf、WdfCoInstaller01005.dll、WinUSBCoInstaller.dll
  • 可以用signtool verify /v /pa XYZDevice.cat查看CAT中包含的文件列表,确认三个文件都在其中

6. 查看事件日志获取详细错误信息

如果以上步骤都无效,查看系统日志的CodeIntegrity事件,获取具体失败原因:

  1. 打开事件查看器 > Windows日志 > 系统
  2. 筛选来源为CodeIntegrity的事件,找到与驱动安装相关的错误条目,里面会明确说明签名失败的原因(比如哈希不匹配、证书链断裂等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:57:55