6

我做了一个小工具。它是一个控制台应用程序,在 Win7 上运行时会带来 UAC 安全提示。我尝试使用以下步骤在 Visual Studio 2010 中签署此 EXE 文件:

  1. 项目属性
  2. 签约
  3. 创建新密钥,如下所示

在此处输入图像描述

密钥文件已成功创建,您可以在下面的捕获中看到。

在此处输入图像描述

问题:

文件仍被 UAC 安全提示阻止。当我使用signtool.exe检查文件是否签名时,它告诉我,没有找到签名。如果我遵循错误的步骤,请纠正我。

在此处输入图像描述

4

2 回答 2

14

程序集签名!= Authenticode 签名。

要使用 signtool 对程序集进行身份验证,您需要来自受信任的颁发机构的代码签名证书。

然后,您可以发出以下构建后命令来签署您的可执行文件:

"signtool.exe" sign /f "$(SolutionDir)myCertificate.pfx" /p certPassword /d "description" /du "http://myinfourl" /t "http://timeserver.from.cert.authority/" $(TargetPath)

您需要了解的有关 Authenticode 代码签名的所有信息

于 2013-05-21T15:03:54.487 回答
7

基本上你有 2 个选项,使用手动执行或通过批处理文件执行的命令

signtool.exe sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "D:\Source\Certificates\CodeSign.pfx" /as /p MyPassword "{path to exe}"

一段时间后变得有点令人沮丧最好将其添加到构建事件中项目的选项页面上。

在您的后期构建中,您将输入

call "C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe" sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "D:\Source\Certificates\CodeSign.pfx" /p MyPassword  $(TargetPath)

$(TargetPath)将填充您编译的 exe 或 dll 的路径。

现在每次编译都会得到一个签名文件。

看起来像这样: 项目属性页面

于 2018-01-13T20:47:51.863 回答