我正在使用2017年的视觉工作室。我不是开发人员。我只是想编写一个简单的解析脚本,我熟悉visual studio。我使用Atmel Studio(基于VS)编写嵌入式代码,但我不必处理签名。我在我的工作计算机上安装了visual studio,现在每次进行新构建时都会出现bit9错误。
内部IT已经向我指出了一堆稍微过时的证书。我现在有一个证书可以应用于我的构建,但是定义here的过程显然不适用于Win32应用程序。我在项目属性中没有签名选项卡。
我还使用signtool查看了visual studio命令行。但是,我需要花费大量时间来了解它的工作原理并加以实施。
希望其他人解决了这个问题,我可以节省时间。如果没有简单的解决方案,我会回去手动解析,因为这已占用了我的大部分时间。
答案 0 :(得分:1)
这就是我使用Visual Studio 2010和Visual Studio 2015为非托管C或C ++ Win32应用程序完成此操作的方法。你需要:
通过这些,可以创建Win32项目的以下自定义构建步骤:
"$(FrameworkSDKDir)bin\\x86\signtool.exe" sign /v /f "path-to-your-cert\yourcert.pfx" /p password "$(TargetPath)" > "$(OutDir)sign\$(ProjectName)-sign.out"
这将使用您的证书对项目输出进行签名(无论是DLL还是EXE没有区别),并将签名证书的输出记录在以项目命名的文件中,后缀为sign.out
,放置该文件位于输出目录中名为sign
的文件夹中。
这可能看起来有点矫枉过正,但有一个原因就是生成了输出文件。通过创建该文件,并将其命名为"输出"自定义构建步骤:
它可以比较用于确定是否重新签名。每次构建项目时,如果重新生成目标图像(您的exe或dll),则输出文件将过时,并且将启动自定义构建步骤以重新生成它(因此也会重新对图像重新签名) )。 sign.out文件,顺便说一句,将包含这样的内容:
The following certificate was selected:
Issued to: The Signing Cert Name Here
Issued by: The Issuer Cert Name Here
Expires: Sat Dec 31 16:59:59 2039
SHA1 hash: 232C80E19EBC71330E7C12CA8C07B345B1531777
Done Adding Additional Store
Successfully signed: full-path-to-image-here
Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0
获得PFX和密码后,您可以轻松地手动测试命令,然后再将其配置为构建的一部分。我见过的唯一真正的通配符是signtool.exe的完整路径,它似乎不时发生变化(例如VS2008与VS2015不同。
无论如何,我是怎么做到的。希望你也可以。