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 Kategorie im Eventlog (https://www.delphipraxis.net/135779-kategorie-im-eventlog.html)

Mr_G 17. Jun 2009 22:05


Kategorie im Eventlog
 
Hallo zusammen,
ich habe mal nach dem Beispiel von Luckie versucht mittels ReportEvent Einträge im Windows-Eventlog zu machen. Das funktioniert auch ganz gut bis auf die Tatsache, dass meine Kategoriebeschreibung nicht angezeigt wird sondern nur eine Zahl.
Meine Message-Datei ist prinzipiell identisch mit der aus der Demo:
Code:
LanguageNames=(German=0x407:MSG00407)

MessageId=0x1
SymbolicName=MSG_DEMO_ENTRY
Language=German
Testeintrag von %1.
.

MessageId=0x1000
SymbolicName=CAT_1
Language=German
Testkategorie 1
.
Die Resource habe ich dann in das Programm mit einkompiliert und mittels FormatMessage in Kombination mit FORMAT_MESSAGE_FROM_HMODULE versucht die Strings testweise anzuzeigen. Sowohl die Kategorie als auch der Testeintrag lassen sich so problemlos anzeigen. Im Eventlog wird die Nachricht auch problemlos angezeigt, nur statt der Kategorie finde ich nur die entsprechende Zahl vor.
Hat jemand eine Idee woran das liegen könnte?

nahpets 18. Jun 2009 09:33

Re: Kategorie im Eventlog
 
Hallo,

hast Du entsprechende Einträge in der Registry?

Delphi-Quellcode:
// Messagefile registrieren
procedure TReplikator.ServiceBeforeInstall(Sender: TService);
Var
    Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('system\CurrentControlSet\Services\EventLog\Application\' + Self.Name,True);
  Reg.WriteString('EventMessageFile',ParamStr(0));
  Reg.WriteInteger('TypesSupported',7);
  Reg.CloseKey;
  Reg.OpenKey('system\CurrentControlSet\Services\Replikator\' + Self.Name,True);
  Reg.WriteString('Description','Repliziert die Daten der Vorortdatenbank in die Zentraldatenbank');
  Reg.CloseKey;
  Reg.Free;
end;

// Messagefile aus Registrierung entfernen
procedure TReplikator.ServiceAfterUninstall(Sender: TService);
Var
    Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.DeleteKey('system\CurrentControlSet\Services\EventLog\Application\' + Self.Name);
  Reg.DeleteKey('system\CurrentControlSet\Services\Replikator\' + Self.Name);
  Reg.CloseKey;
  Reg.Free;
end;
Ansonsten: Hilft der dashier http://www.delphipraxis.net/internal...ct.php?t=76788?

Mr_G 18. Jun 2009 12:10

Re: Kategorie im Eventlog
 
Leider funktioniert es immer noch nicht. Ich habe es mittlerweile auch mal mit einer extra DLL ausprobiert. Selbes Problem...
Hier mal meine Registry-Einträge für den Test:
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\LogTestApp]
"EventMessageFile"="C:\\Users\\Jan\\Desktop\\Logging\\Dll\\Project1.dll"
"CategoryMessageFile"="C:\\Users\\Jan\\Desktop\\Logging\\Dll\\Project1.dll"
"CategoryCount"=dword:00000001
"TypesSupported"=dword:00000007
Wie gesagt: Die Beschreibung wird korrekt angezeigt, bei der Kategorie taucht nur die Zahl (4096) auf.

nahpets 18. Jun 2009 12:34

Re: Kategorie im Eventlog
 
Hallo,

ich ahne da was, weiß aber nicht, ob ich richtig liege:

Du hast
Code:
"CategoryCount"=dword:00000001
= eine Kategorie.
Du hast aber auch
Code:
LanguageNames=(German=0x407:MSG00407)

MessageId=0x1 
SymbolicName=MSG_DEMO_ENTRY
Language=German
Testeintrag von %1.
.

MessageId=0x1000 
SymbolicName=CAT_1 
Language=German
Testkategorie 1 
.
Die MessageID ist 4096 (dez).
Ändere bitte den
Code:
"CategoryCount"=dword:00000001
mal in
Code:
"CategoryCount"=dword:00001000
und schaue, ob sich dann was ändert.
Alternativ:
Code:
"CategoryCount"=dword:00000001
auf
Code:
"CategoryCount"=dword:00000002
ändern und
Code:
MessageId=0x1000
auf
Code:
MessageId=0x0002
Die MessageID's und CatecoryCount müssen (vermutlich) zusammenpassen.

Mr_G 18. Jun 2009 15:15

Re: Kategorie im Eventlog
 
So... nun habe ich nochmal alle erdenklichen Möglichkeiten durchprobiert. Leider ohne Erfolg :(
Zitat:

Zitat von nahpets
Die MessageID's und CatecoryCount müssen (vermutlich) zusammenpassen.

Glaube ich zwar nicht aber ich hab auch mal die ID für die Kategorie und CategoryCount auf 1 gesetzt. Wie gesagt... es bleibt dabei: Im Feld Kategorie wird nur die Zahl (diesmal halt eine 1) angezeigt.

Mr_G 22. Jun 2009 07:54

Re: Kategorie im Eventlog
 
Mittlerweile habe ich mal eine VM mit XP gebastelt und dort getestet: Wenn ich 0x1000 als ID für die Kategorie nutze funktioniert es auch dort nicht, wenn ich aber 0x1 nutze wird hier die Kategorie (anders als bei meinem System, Vista 64Bit) ohne Probleme angezeigt.
Muss ich bei Vista noch etwas beachten? Kennt jemand das Problem?

Mr_G 25. Jun 2009 09:01

Re: Kategorie im Eventlog
 
*push*


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr.

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