You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

签名Windows x64驱动后加载提示「系统找不到指定文件」求助

排查驱动签名后加载提示「系统找不到指定文件」的问题

结合你用SafeNet EV令牌签名驱动的场景,我整理了几个核心排查方向,帮你定位问题:


1. 先检查签名命令的参数是否匹配

你当前的命令里用了/sha1 my_sha256_hash,这里很可能踩了坑:/sha1参数要求填写的是证书的SHA1指纹,而不是证书的算法哈希类型(哪怕你的证书是SHA256 EV的)。如果填成SHA256哈希,signtool会找不到对应的证书,导致签名不完整,驱动实际没有被正确签名,系统加载时就会抛出模糊的“找不到文件”错误。

解决方法:

  • 打开证书管理器(针对你的SafeNet令牌),找到那张SHA256 EV证书,查看它的SHA1指纹(在证书详情的“指纹”字段里,注意去掉空格)
  • 替换命令里的my_sha256_hash为这个SHA1指纹;或者干脆去掉/sha1参数,因为你已经用/n "my_company"指定了证书主体,只要令牌里只有对应公司的EV证书(或者系统优先匹配SHA256的),也能正确选中目标证书。

2. 确认SafeNet令牌的访问权限和签名完整性

EV签名依赖令牌的私钥访问,这几个细节容易被忽略:

  • 必须用管理员权限运行命令提示符!驱动签名需要修改文件的数字签名属性,普通权限可能导致签名不完整。
  • 签名过程中有没有弹出SafeNet令牌的PIN码输入窗口?如果弹窗被后台程序挡住,签名会静默失败,驱动文件相当于没被签名,系统加载时自然会报错。可以打开SafeNet Authentication Client,确保令牌状态正常,签名时主动留意PIN码提示。

3. 验证签名有效性,排查系统驱动策略

用signtool自带的验证命令,先确认签名是否真的成功:

signtool verify /v /pa mydriver.sys

查看输出里的细节:

  • 有没有提示“签名有效”?如果有证书链不完整的错误,需要用/ac参数指定EV证书的中间证书文件(有些SafeNet令牌会自动包含中间链,但如果没有的话需要手动导入)。
  • 时间戳是否有效?你的命令用了Verisign的时间戳服务器,这个是没问题的,但要确保时间戳成功写入。
  • 另外,Windows 10/11的新版本默认要求驱动必须有SHA256签名+有效时间戳,且未处于测试模式的话,未通过验证的驱动会被系统阻止加载,此时系统可能会用“找不到文件”来掩盖签名验证失败的真实原因。如果是测试环境,可以先启用测试模式(bcdedit /set testsigning on,重启生效)再尝试加载。

4. 排查文件路径和权限问题

虽然Depends检查驱动无异常,但加载时的实际路径和权限可能有问题:

  • 确保加载驱动时指定的路径和你签名的mydriver.sys路径完全一致,避免指向未签名的副本。
  • 尝试把签名后的驱动复制到C:\Windows\System32\drivers目录(管理员权限操作),再加载试试,这个目录是系统默认的驱动目录,权限配置更规范。

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

火山引擎 最新活动