program RemoveSignature; {$APPTYPE CONSOLE} uses SysUtils, Windows, ImageHlp; resourcestring LNG_NOTFOUND = 'File not found'; LNG_REMOVE = 'Remove certificate from "%s".'; LNG_ERROR = 'Error while removing certificate. Error code: %s'; LNG_OPEN_ERROR = 'Error while opening file. Error code: %s.'; LNG_OK = 'OK'; var fil, err: String; x: Cardinal; i: integer; begin WriteLn('ViaThinkSoft RemoveSignature'); WriteLn(''); WriteLn('Usage:'); WriteLn('RemoveSignature.exe [File1 [File2 ...]]'); WriteLn(''); for i := 1 to ParamCount do begin fil := ParamStr(i); WriteLn(Format(LNG_REMOVE, [fil])); Write(#9); if not FileExists(fil) then begin WriteLn(Format(LNG_NOTFOUND, [fil])); ExitCode := 1; Exit; end; x := CreateFile(PChar(fil), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); try if x = INVALID_HANDLE_VALUE then begin ExitCode := 1; err := IntToHex(GetLastError, 8); WriteLn(Format(LNG_OPEN_ERROR, [err])); end else begin if not ImageRemoveCertificate(x, 0) then begin ExitCode := 1; err := IntToHex(GetLastError, 8); WriteLn(Format(LNG_ERROR, [err])); end else begin WriteLn(LNG_OK); end; end; finally CloseHandle(x); end; end; Sleep(2000); end.