使用 SetupAPI 驗證驅動程式 Authenticode 簽章
您可以使用下列程式來確認驅動程式套件具有有效的 Authenticode 數字簽名。 從 Microsoft Windows Server 2003 開始,支持這些程式。
判斷驅動程式是否有有效的 Authenticode 簽章
檢查DNF_AUTHENTICODE_SIGNED旗標。
如果驅動程式套件具有有效的 Authenticode 簽章,Windows 會在驅動程式節點SP_DRVINSTALL_PARAMS結構的 Flags 成員中設定此旗標。 (也請注意,如果驅動程式具有 WHQL 發行簽章、為系統提供的驅動程式,或具有 Authenticode 簽章,則 Windows 會設定DNF_INF_IS_SIGNED旗標。)
確認 INF 檔案具有有效的 Authenticode 簽章
檢查函式傳回的錯誤碼。
如果 INF 檔案不是系統提供,而且沒有有效的 WHQL 數字簽名,但具有有效的 Authenticode 簽章, SetupVerifyInfFile 會傳回 FALSE ,而 GetLastError 會傳回下列其中一個錯誤碼:
ERROR_AUTHENTICODE_TRUSTED_PUBLISHER
表示發行者受信任,因為發行者的憑證已安裝在 受信任的發行者證書存儲中。ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED
表示無法自動建立信任,因為發行者的簽署憑證未安裝在受信任的發行者證書存儲中。 不過,這不一定表示錯誤。 相反地,它表示呼叫端必須套用呼叫端特定的原則,才能在發行者中建立信任。
如果 INF 檔案具有有效的 Authenticode 簽章, SetupVerifyInfFile 也會傳回SP_INF_SIGNER_INFO輸出結構中的下列資訊:
DigitalSigner 成員會設定為簽署者的名稱。
CatalogFile 成員會設定為對應已簽署目錄檔案的完整路徑。
不過請注意, SetupVerifyInfFile 不會傳回 DigitalSignerVersion 成員中的版本。
確認檔案具有有效的 Authenticode 簽章
使用 SPQ_SCAN_USE_CALLBACK_SIGNERINFO 旗標呼叫 SetupAPI 函式 SetupScanFileQueue 。
SetupScanFileQueue 會將SPFILENOTIFY_QUEUESCAN_SIGNERINFO要求傳送至呼叫端的回呼例程,並將指標傳遞至FILEPATHS_SIGNERINFO結構。 如果使用有效的 Authenticode 簽章簽署檔案,函式會在呼叫檔案的回呼例程之前,將錯誤碼設定為適當的ERROR_AUTHENTICODE_Xxx值。 函式也會在 FILEPATHS_SIGNERINFO 結構中設定下列資訊:
DigitalSigner 成員會設定為簽署者的名稱。
CatalogFile 成員會設定為對應已簽署目錄檔案的完整路徑。
不過,請注意,版本成員中未設定 版本 。
SetupScanFileQueue 會以與本主題稍早 針對 SetupVerifyInfFile 所述的方式來設定ERROR_AUTHENTICODE_Xxx錯誤碼。