Encontre este procedimiento lo hice funcionar pero me da siempre No se pudo comprobar el fabricante, desea ejeutar igual este sof....pulso ejecutar no hace nada y me cambia toda la pantalla de color.
Código Delphi
[-]
const
WTD_UI_ALL = 1;
WTD_UI_NONE = 2;
WTD_UI_NOBAD = 3;
WTD_UI_NOGOOD = 4;
WTD_REVOKE_NONE = $00000000;
WTD_REVOKE_WHOLECHAIN = $00000001;
WTD_CHOICE_FILE = 1;
WTD_CHOICE_CATALOG = 2;
WTD_CHOICE_BLOB = 3;
WTD_CHOICE_SIGNER = 4;
WTD_CHOICE_CERT = 5;
WTD_STATEACTION_IGNORE = $00000000;
WTD_STATEACTION_VERIFY = $00000001;
WTD_STATEACTION_CLOSE = $00000002;
WTD_STATEACTION_AUTO_CACHE = $00000003;
WTD_STATEACTION_AUTO_CACHE_FLUSH = $00000004;
type
PWinTrustFileInfo = ^TWinTrustFileInfo;
TWinTrustFileInfo = record
cbStruct: DWORD;
pcwszFilePath: PWideChar;
hFile: THandle;
pgKnownSubject: PGUID;
end;
PWinTrustData = ^TWinTrustData;
TWinTrustData = record
cbStruct: DWORD;
pPolicyCallbackData: Pointer;
pSIPClientData: Pointer;
dwUIChoice: DWORD;
fdwRevocationChecks: DWORD;
dwUnionChoice: DWORD;
pUnionData: Pointer;
dwStateAction: DWORD;
hWVTStateData: THandle;
pwszURLReference: PWideChar;
dwProvFlags: DWORD;
dwUIContext: DWORD;
end;
function VerifySignature(const FileName: WideString): Longint;
var
FileInfo: TWinTrustFileInfo;
TrustData: TWinTrustData;
begin
FillChar(FileInfo, SizeOf(FileInfo), 0);
FileInfo.cbStruct := SizeOf(FileInfo);
FileInfo.pcwszFilePath := PWideChar(FileName);
FillChar(TrustData, SizeOf(TrustData), 0);
TrustData.cbStruct := SizeOf(TrustData);
TrustData.dwUIChoice := WTD_UI_NONE;
TrustData.fdwRevocationChecks := WTD_REVOKE_NONE;
TrustData.dwUnionChoice := WTD_CHOICE_FILE;
TrustData.pUnionData := @FileInfo;
TrustData.dwStateAction := WTD_STATEACTION_IGNORE;
TrustData.dwProvFlags := WTD_SAFER_FLAG;
TrustData.dwUIContext := WTD_UICONTEXT_EXECUTE;
Result := WinVerifyTrust(0, WINTRUST_ACTION_GENERIC_VERIFY_V2, @TrustData);
end;
Código Delphi
[-]
procedure CodeSignVerify(const FileName: string; AllowUserPrompt: Boolean = False);
var
SignedCode: ISignedCode;
begin
SignedCode := CoSignedCode.Create;
SignedCode.FileName := FileName;
SignedCode.Verify(AllowUserPrompt);
end;