簡體   English   中英

如何讓 Visual Studio 2017 自動簽署 Win32 應用程序?

[英]How can I get Visual Studio 2017 to sign a Win32 application automatically?

我正在使用 visual studio 2017。我不是開發人員。 我只是想寫一個簡單的解析腳本,我熟悉 visual studio。 我使用 Atmel Studio(基於 VS)編寫嵌入式代碼,但我不必處理簽名。 我在工作計算機上安裝了 visual studio,現在每次創建新版本時都會出現 bit9 錯誤。

內部 IT 向我指出了一堆稍微過時的證書內容。 我現在有一個證書可以應用於我的構建,但是此處定義的過程顯然不適用於 Win32 應用程序。 我在項目屬性中沒有簽名選項卡。

我還使用 signtool 研究了 visual studio 命令行。 但是,我需要花費大量時間來了解它的工作原理和實施方式。

希望其他人已經解決了這個問題,我可以節省時間。 如果沒有簡單的解決方案,我將返回手動解析,因為這已經占用了我很多時間。

這就是我使用 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 不同。

不管怎樣,我就是這樣做的。 希望你也可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM