Visual Studio 签名失败(signtool.exe 错误)

Posted

技术标签:

【中文标题】Visual Studio 签名失败(signtool.exe 错误)【英文标题】:Visual studio signing failed (signtool.exe error) 【发布时间】:2020-02-29 01:38:23 【问题描述】:

在今天下午接受了一次小的 Windows 更新后,我发现我无法再对我的 Visual Studio 应用程序进行签名构建。

深入研究问题后,我发现了位于一个不起眼的目录 (C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64) 中的 signtool.exe 程序。使用命令提示符,我尝试手动运行它来签署我的应用程序,但是当我这样做时,什么也没发生:没有输出,没有错误消息。我还尝试在没有参数的情况下运行它,期望得到帮助消息或至少出现错误,但同样没有。

我去了另一台今天还没有收到任何 Windows 更新的计算机,找到了相同的文件并运行它:它运行良好。

我认为我的第一台计算机上的 .exe 文件一定有损坏,我从另一台计算机复制了该版本,但仍然失败。但是,如果我重命名文件,它就会运行。例如,如果我将它重命名为“signtool1.exe”,我就可以从命令行运行它就好了,尽管 Visual Studio 由于名称更改仍然无法运行它。

在此过程中,我确实尝试过多次重启我的计算机,我认为它的副本可能卡在内存中,但没有。我也在任务管理器中搜索过。

我以前从未见过这样的事情。根据可执行文件的名称,相同的程序运行或不执行任何操作。更详细一点,如果我将文件名复制到我的主目录,它实际上会运行而不考虑文件名。什么会导致这样的事情?

谢谢, 弗兰克

【问题讨论】:

Win10 在进程失败时不再显示崩溃对话框。您应该在程序员的机器上修复的东西。在应用程序事件日志中查找崩溃通知。 我遇到了同样的问题。我用下面@xperia64 的提示修复了它。但是,这个链接也可能是相关的Microsoft Admits Major Issues With Windows 10 KB453599 【参考方案1】:

我发现不是重命名 signtool.exe,而是重命名/删除 signtool.exe.manifest 允许 signtool 运行,同时仍然允许 Visual Studio 运行它。

我不知道为什么会发生这种情况,也不知道删除清单的副作用是什么,但这足以让我的项目再次构建。

作为参考,我在干净的 Windows 10 1909 虚拟机中执行干净的 VS2019 安装后遇到了这个问题(但不久之后完全更新)。

【讨论】:

【参考方案2】:

我遇到了同样的问题。 Signtool 不显示任何错误对话框,但返回的错误代码为 -1073741502 (0xC0000142),STATUS_DLL_INIT_FAILED。

问题可能与更新 KB4535996 有关。当我看到问题并且signtool正常工作时,我卸载了更新。重新安装更新后问题又出现了。

如果我将清单文件移出目录,Signtool 就可以工作,就像你看到的那样。但我也注意到,当我将清单移回目录时,signtool 可以工作。

【讨论】:

【参考方案3】:

这是 Windows 反馈中心的Bug Report。 请为 KB4535996 错误报告投票。

【讨论】:

以上是关于Visual Studio 签名失败(signtool.exe 错误)的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017 安装程序清单签名验证失败 怎么解决

win 7 装visual studio 2015出现问题, 没有验证对象的数字签名

win7安装Visual Studio 2013社区版出现KB2829760,没有验证对象的数字签名错误。

Visual Studio 2012 安装问题

Visual Studio Cordova 签名应用程序

通过 Visual Studio 项目文件禁用驱动程序签名