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

修改shell32.dll后signtool重签名提示无符合条件证书如何解决?

报错原因

SignTool Error: No certificates were found that met all the given criteria.

出现这个错误的核心原因是signtool sign /a会自动扫描当前系统证书存储中符合代码签名要求、持有对应私钥、未过期的有效证书,你的本地设备中不存在符合条件的证书,因此无法完成签名。另外shell32.dll是微软官方发布的系统核心文件,你无法获取到微软的官方签名证书,只能通过自签名证书完成签名操作,后续需要将自签名证书加入系统受信任根证书列表,避免系统校验签名不通过。

解决步骤
  • 第一步:生成自签名代码签名证书
    用管理员权限打开PowerShell,执行以下命令生成有效期10年的代码签名证书:
    New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=Local System Code Sign" -CertStoreLocation "Cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(10)

  • 第二步:将证书加入系统受信任根证书存储

    1. 按下Win+R组合键,输入certmgr.msc回车打开证书管理器
    2. 依次展开「当前用户」→「个人」→「证书」,找到刚才生成的名为「Local System Code Sign」的证书
    3. 右键复制该证书,再依次展开「受信任的根证书颁发机构」→「证书」,右键空白处选择粘贴
  • 第三步:重新执行签名操作
    如果用自动搜索证书的方式还是报错,可以手动指定证书指纹签名:

    1. 双击刚才生成的证书,切换到「详细信息」标签页,找到「指纹」字段,复制所有十六进制字符并去掉中间的空格
    2. 执行签名命令:
      signtool sign /sha1 [你复制的证书指纹] [path]/shell32.dll
额外注意事项
  • 所有操作都需要使用管理员权限执行,否则证书操作、系统目录文件修改都会触发权限报错
  • 替换修改后的shell32.dll前请务必做好系统备份,或者提前创建系统还原点,避免修改失败导致系统无法启动
  • 64位系统需要同时处理System32和SysWOW64目录下的两个shell32.dll文件,避免32位程序调用时出现签名校验失败的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:18:02