Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
Delphi 10.4 Sydney
|
AW: OpenEventLog: wie lpSourceName herausfinden?
17. Jan 2022, 15:09
Hier kommen verschiedene Handle-Werte bei rum:
Delphi-Quellcode:
var
SourceName: string;
SystemEventLogHandle,
WinDefendEventLogHandle: THandle;
begin
try
SourceName := 'System';
SystemEventLogHandle := OpenEventLog(nil, @SourceName);
Der Aufruf ist falsch kodiert, @Sourcename gibt die Addresse der Variablen SourceName, nicht die des Inhalts. Versuch mal
SystemEventLogHandle := OpenEventLog(nil, PChar(SourceName));
Jo, stimmt schon!
Hilft aber trotzdem nicht weiter, weil diese Kackschnittstelle einen immer auf 'Application' zurückwirft, wenn sie den Namen nicht auflösen kann. Tolle Wurst!
Delphi-Quellcode:
procedure OpenAndPrintEventLog( const SourceName: string);
var
EventLogHandle: THandle;
NumberOfRecords: DWORD;
RetValue: LongBool;
begin
EventLogHandle := OpenEventLog( nil, PChar(SourceName));
Writeln(SourceName, ' : ', EventLogHandle.ToHexString);
NumberOfRecords := 0;
RetValue := GetNumberOfEventLogRecords(EventLogHandle, NumberOfRecords);
if RetValue then
begin
Writeln(SourceName, ' has ', NumberOfRecords, ' records');
end
else
begin
Writeln(SourceName, ' has no records');
end;
end;
begin
try
OpenAndPrintEventLog(' System');
OpenAndPrintEventLog(' System\WinDefend');
OpenAndPrintEventLog(' Application');
OpenAndPrintEventLog(' Security');
OpenAndPrintEventLog(' Windows PowerShell');
OpenAndPrintEventLog(' Microsoft\Windows\Win32k');
except
on E: Exception do
Writeln(E.ClassName, ' : ', E. Message);
end;
Readln;
end.
|
|
Zitat
|