Delphi 检测文件数字签名

Uses Winapi.Windows, JwaSoftpub, CAPICOM_TLB, JwaWintrust;

Function IsCodeSigned(const Filename:String):Boolean;
var
  FileInfo   :TWinTrustFileInfo;
  TrustData  :TWinTrustData;
begin
  ZeroMemory(@FileInfo, SizeOf(TWintrustFileInfo));
  ZeroMemory(@TrustData, SizeOf(TWinTrustData));
  FileInfo.cbStruct             := SizeOf(TWintrustFileInfo);
  FileInfo.pcwszFilePath        := PWideChar(FileName);
  TrustData.cbStruct            := sizeof(TrustData);
  TrustData.dwUIChoice          := WTD_UI_NONE;
  TrustData.fdwRevocationChecks := WTD_REVOKE_NONE;
  TrustData.dwUnionChoice       := WTD_CHOICE_FILE;
  TrustData.InfoUnion.pFile     := @FileInfo;
  Result := WinVerifyTrust(INVALID_HANDLE_VALUE, WINTRUST_ACTION_GENERIC_VERIFY_V2, TrustData) = ERROR_SUCCESS;
end;

标签: delphi, pascal, 数字签名, WinVerifyTrust, CodeSigned, 代码签名

添加新评论