Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Eventlog - Eigene Rubrik anlegen? (https://www.delphipraxis.net/147943-eventlog-eigene-rubrik-anlegen.html)

moelski 19. Feb 2010 13:55


Eventlog - Eigene Rubrik anlegen?
 
Moin !

Ist es eigentlich machbar im Eventlog eine eigene Rubrik ála "Application", "System", ... anzulegen?
Irgendwie muss es gehen, denn ich habe hier auf meinem XP additive Gruppen wie "Windows Powershell" oder auch was von meinem Virenscanner.

:gruebel:

Astat 19. Feb 2010 15:24

Re: Eventlog - Eigene Rubrik anlegen?
 
Hallo, moelski.

1. Registry Eintrag setzen
2. Wenn notwendig Resourcen Dll erstellen
3. Dann als Sample mit SetEventLogStartUpInfos in die Section schreiben

Done!

Delphi-Quellcode:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\My Application Name]
"EventMessageFile"="%SystemRoot%\\system32\\eventres.dll"
"TypesSupported"=dword:00000007
"CategoryMessageFile"="%SystemRoot%\\system32\\eventres.dll"
"CategoryCount"=dword:00000002


library eventres;

  {$R ..\ResDLL\tada.res}


  {$R *.RES}
 
begin
end.


function WriteEventlog(szMsgArray: array of PChar; lpUNCServerName,
  szSourceName: PChar; EventType, CategoryID, EventID: Word;
  ptrBinaryData: Pointer; cbBinaryData: integer): boolean;
var
  hEventlog: THandle;
begin

  hEventLog := RegisterEventSource(lpUNCServerName, szSourceName);

  if hEventLog > 0 then begin

    ReportEvent(
      hEventLog,
      EventType,
      CategoryID,
      EventID,
      nil,
      Length(szMsgArray),
      cbBinaryData,
      @szMsgArray,
      ptrBinaryData
    );

    DeRegisterEventSource(hEventLog);
  end;
end;


procedure SetEventLogStartUpInfos;
var
  szMsgArray: array of PChar;
  ms: TMemoryStream;
begin
  SetLength(szMsgArray, 1);

  szMsgArray[0] := PChar(ParamStr(0));  //-- EventID = ResourceStringID %1
  //szMsgArray[1] := '10.4.126.34'; //-- EventID = ResourceStringID %2

  ms := TMemoryStream.Create;
  try
    ms.Write(_RegStruct, SizeOf(_RegStruct));

    WriteEventlog(
      szMsgArray,                 //-- szMsgArray: array of PChar;
      nil,                        //-- lpUNCServerName
      PChar('My Application Name'),//-- szSourceName
      EVENTLOG_INFORMATION_TYPE,  //-- EventType
      1,                          //-- CategoryID
      3,                          //-- EventID (Resource String ID mit 2 Platzhalter)
      ms.Memory,                  //-- ptrBinaryData
      ms.Size                     //-- cbBinaryData
      );
  finally
    ms.free;
  end;
end;

lg. Astat


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz