Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: OpenEventLog: wie lpSourceName herausfinden?

  Alt 17. Jan 2022, 14: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.
  Mit Zitat antworten Zitat