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. |