使用MS Sign Tool自签名SignedFileTEST.exe无报错但无反应,求助
解决SignTool执行无报错但签名未生效的问题
1. 先确认签名是否真的未完成
无报错不代表签名成功,先通过两种方式验证:
- 执行验证命令查看详细信息:
signtool.exe verify /v /pa "C:\Projects\SignedFileTEST.exe"/v显示详细输出,/pa检查所有签名(包括嵌套的) - 右键
SignedFileTEST.exe→ 属性 → 数字签名标签,查看是否有签名条目
2. 检查证书是否符合代码签名要求
自签名证书必须是代码签名类型才能用于exe签名:
- 执行命令查看证书扩展信息:
找到certutil -dump "C:\TESTsign.pfx" -p 1230Carlos#Enhanced Key Usage字段,确认包含Code Signing (1.3.6.1.5.5.7.3.3),如果没有,说明你生成的证书类型不对,需要重新生成代码签名类的自签名证书
3. 优化SignTool命令,避免静默失败
给命令添加必要参数,强制输出详细过程并指定标准算法:
cd "C:\Program Files (x86)\Windows Kits\10\App Certification Kit\" signtool.exe sign /v /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /f "C:\TESTsign.pfx" /p "1230Carlos#" "C:\Projects\SignedFileTEST.exe"
参数说明:
/v:显示签名全过程的详细日志,能定位隐藏问题/fd SHA256:指定文件签名算法为SHA256(SHA1已被Windows弃用)/tr//td:添加时间戳,避免证书过期后签名失效- 密码用双引号包裹,确保特殊字符(比如
#)被正确解析
4. 排查权限与文件占用问题
- 必须以管理员身份运行命令提示符,否则可能因权限不足无法写入签名信息
- 确保
SignedFileTEST.exe未被其他程序占用(比如正在调试运行),否则签名无法覆盖写入 - 确认pfx文件路径和密码完全正确,密码中的特殊字符没有被命令行误解析
5. 处理自签名证书的信任问题
即使签名成功,系统默认不信任自签名证书,会显示"数字签名无效",需要将证书导入信任列表:
certutil -addstore -f "TrustedPublisher" "C:\TESTsign.pfx" -p 1230Carlos#
导入后再查看exe的数字签名,就会显示"此数字签名正常"
内容的提问来源于stack exchange,提问作者Carl
相关产品推荐
相关产品推荐

