這就是我用Visual Studio 2010和Visual Studio 2015爲非託管C或C++ Win32應用程序完成的。您需要:
- 簽名證書。在Windows中工作時,通常以PFX的形式提供,並且通常是證書鏈中的中間證書。
- 上述PFX解密證書私鑰的密碼。
有了這些,你的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,比如VS2015)。
無論如何,這就是我做到的。也可以。
IT有沒有給你一個pfx?(和密碼,當然),只是好奇,我不得不這樣做VS2010和VS2015。除非MS最終將它集成到IDE中,以便在VS 2017中用於非託管C++的項目配置(並且它聽起來像它仍然不是),否則確實可以使用signtool,並且它不是那麼難,只要您具有pfx和關聯的密碼。 – WhozCraig
@WhozCraig他們給我一個鏈接到一個微軟網站來生成我自己的pfx。所以是的。我有一個使用我設置的密碼的pfx。 –