Subversion Repositories autosfx

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 daniel-mar 1
program RemoveSignature;
2
 
3
{$APPTYPE CONSOLE}
4
 
5
uses
6
  SysUtils,
7
  Windows,
8
  ImageHlp;
9
 
10
resourcestring
11
  LNG_NOTFOUND = 'File not found';
12
  LNG_REMOVE = 'Remove certificate from "%s".';
13
  LNG_ERROR = 'Error while removing certificate. Error code: %s';
14
  LNG_OPEN_ERROR = 'Error while opening file. Error code: %s.';
15
  LNG_OK = 'OK';
16
 
17
var
18
  fil, err: String;
19
  x: Cardinal;
20
  i: integer;
21
 
22
begin
23
  WriteLn('ViaThinkSoft RemoveSignature');
24
  WriteLn('');
25
  WriteLn('Usage:');
26
  WriteLn('RemoveSignature.exe [File1 [File2 ...]]');
27
  WriteLn('');
28
 
29
  for i := 1 to ParamCount do
30
  begin
31
    fil := ParamStr(i);
32
 
33
    WriteLn(Format(LNG_REMOVE, [fil]));
34
    Write(#9);
35
 
36
    if not FileExists(fil) then
37
    begin
38
      WriteLn(Format(LNG_NOTFOUND, [fil]));
39
      ExitCode := 1;
40
      Exit;
41
    end;
42
 
43
    x := CreateFile(PChar(fil), GENERIC_READ or GENERIC_WRITE, 0,
44
      nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
45
    try
46
      if x = INVALID_HANDLE_VALUE then
47
      begin
48
        ExitCode := 1;
49
        err := IntToHex(GetLastError, 8);
50
        WriteLn(Format(LNG_OPEN_ERROR, [err]));
51
      end
52
      else
53
      begin
54
        if not ImageRemoveCertificate(x, 0) then
55
        begin
56
          ExitCode := 1;
57
          err := IntToHex(GetLastError, 8);
58
          WriteLn(Format(LNG_ERROR, [err]));
59
        end
60
        else
61
        begin
62
          WriteLn(LNG_OK);
63
        end;
64
      end;
65
    finally
66
      CloseHandle(x);
67
    end;
68
  end;
69
 
70
  Sleep(2000);
71
end.