2009-07-15 64 views
6

我有一個數字簽名簽名的項目im的exe文件,這意味着當它要求管理員權限時顯示公司名稱。這工作得很好,但如果你修改exe文件,它仍然可以工作,並在那裏顯示未知。以編程方式檢查數字簽名

有沒有辦法在運行exe時檢查數字簽名是否有效,以避免修改後的版本運行?

Visual Studio 2008的 Windows 7的

回答

8

Here是一個示例程序(它使用WinVerifyTrust函數)驗證簽名,但我不知道它會在Windows 7的工作,你應該嘗試一下。

+2

WinTrustVerify是調用。它會告訴你這個二進制碼是經過代碼簽名的。如果您需要確保它是具有特定certifiate(例如你的公司)簽約,那麼你就需要調用CertVerifyCertificateChainPolicy驗證(可能在一個循環中)。 – selbie 2009-08-01 23:12:01

0

考慮到您已經有UAC需求,在「計算機配置\ Windows設置\本地策略\安全選項」中設置GPO選項「僅升級經過簽名和驗證的可執行文件」是否就足夠了?還有一個"Use Certificate Rules on Windows Executables for Software Restriction Policies"設置可能會有用。

這些設置是不是試圖從自己的應用程序來檢查比較好,因爲整個的一點是,你可以不再信任自己,當你的二進制文件被修改。

+0

這將安裝在最終用戶合成物,所以我不能設置該選項。我更擔心腐敗,然後「黑客」。 – Lodle 2009-07-15 13:35:10

相關問題