Vielleicht hat deine Explorer.exe keine Zertifikats-Sektion.
(Kartenreiter 'Digitale Signaturen' in den Dateieigenschaften)
Bei mir funktioniert (unter Wine) folgendes problemlos:
Delphi-Quellcode:
function ImageEnumerateCertificates(FileHandle: THandle; TypeFilter: Word;
out CertificateCount: DWORD; Indices: PDWORD; IndexCount: DWORD): BOOL;
stdcall; external 'imagehlp.dll' name 'ImageEnumerateCertificates';
procedure TForm1.Button1Click(Sender: TObject);
const
FILE_READ_DATA = $01;
CERT_SECTION_TYPE_ANY = $FF;
var
FileHandle: THandle;
CertificateCount: DWORD;
begin
FileHandle := CreateFile(PChar('D:\borland\delphi3\BIN\delphi32.exe'),
GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
if FileHandle = INVALID_HANDLE_VALUE then
ShowMessage('CreateFile: ' + SysErrorMessage(GetLastError))
else
try
CertificateCount := 0;
if not ImageEnumerateCertificates(FileHandle,
CERT_SECTION_TYPE_ANY, CertificateCount, nil, 0) then
ShowMessage('ImageEnumerateCertificates: ' + SysErrorMessage(GetLastError))
else
ShowMessage('CertificateCount: ' + IntToStr(CertificateCount));
finally
CloseHandle(FileHandle);
end;
end;
Explorer.exe = 0
delphi32.exe = 1
Wenn ich mich recht erinnere, sind die delphi32.exe der anderen Delphi-Versionen nicht digital signiert...
Gruß Nico