AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi "Die Beschreibung der Ereigniskennung" unterdrücken?
Thema durchsuchen
Ansicht
Themen-Optionen

"Die Beschreibung der Ereigniskennung" unterdrücken?

Ein Thema von pduck · begonnen am 2. Mär 2006 · letzter Beitrag vom 7. Nov 2017
Antwort Antwort
Seite 1 von 2  1 2      
pduck

Registriert seit: 2. Mär 2006
11 Beiträge
 
Delphi 2006 Professional
 
#1

"Die Beschreibung der Ereigniskennung" unterdrücke

  Alt 2. Mär 2006, 12:26
Hallo,

leider finde ich nirgends einen Hinweis wie man diese Meldung im Ereignislog unterdrückt:

"Die Beschreibung der Ereigniskennung ( 0 ) in ( NASWatchdog ) wurde nicht gefunden. [...]"

Erzeugt wird sie mittels TService.LogMessage(...).

Vielen Dank
Alexander
  Mit Zitat antworten Zitat
pduck

Registriert seit: 2. Mär 2006
11 Beiträge
 
Delphi 2006 Professional
 
#2

Re: "Die Beschreibung der Ereigniskennung" unterdr

  Alt 10. Mär 2006, 16:02
So mittlerweile habe ich mich durch verschiedene Antwortschnippsel gearbeitet. Es führt wohl kein Weg um das Einbinden einer Ressourcen-DLL herum.

Der einfachste Weg (meiner Ansicht nach) sei hier beschrieben:

1. Erstellen einer Ressourcendatei mit dem XN Ressource Editor:
-> AddRessource vom type MessageTable
-> AddString mit ID=0 und String=%1 (%1 reicht den Ereignisstring durch!)
-> Speichern als .res Datei

2. Erstellen eines DLL Projekts und Einbinden der Ressource {$R XYZ.res}. Als DLL kompilieren.

3. In der TService-Unit im ServiceAfterInstall-Trigger sicherstellen, dass ein entsprechender Registry Schlüssel mit Verweis auf die DLL erstellt wird.

Z.B. so:
Delphi-Quellcode:
procedure TNASWatchdog.ServiceAfterInstall(Sender: TService);
const STR_REGKEY_SVC = '\SYSTEM\CurrentControlSet\Services\';
      STR_REGKEY_EVENTMSG = '\SYSTEM\CurrentControlSet\Services\Eventlog\Application\';
      STR_REGVAL_EVENTMESSAGEFILE = 'EventMessageFile';
      STR_REGVAL_TYPESSUPPORTED = 'TypesSupported';
      STR_REGVAL_CONFIGFILE = 'ConfigurationFile';
      STR_REGVAL_IMAGEPATH = 'ImagePath';
      NWDServiceEventDLLName = 'WDEventLogMsg.dll';

var Reg : TRegistry;
    ImagePath : string;

begin
  try
    Reg:=TRegistry.Create;
    Reg.RootKey:=HKEY_LOCAL_MACHINE;

    if Reg.OpenKey(STR_REGKEY_SVC + self.Name,False) then
      begin
        ImagePath:=Reg.ReadString(STR_REGVAL_IMAGEPATH);
        Reg.WriteString(STR_REGVAL_CONFIGFILE,ExtractfilePath(ImagePath) + TWD_Config.GetDefaultConfigFileName());
        Reg.CloseKey;
      end;

    if Reg.OpenKey(STR_REGKEY_EVENTMSG + self.Name,True) then
      begin
        Reg.WriteString(STR_REGVAL_EVENTMESSAGEFILE,ExtractfilePath(ImagePath) + NWDServiceEventDLLName);
        Reg.WriteInteger(STR_REGVAL_TYPESSUPPORTED,7);
        Reg.CloseKey;
      end;

    FreeAndNil(Reg);

  except
   if Assigned(Reg) then
     FreeAndNil(Reg);
  end;
end;
4. Dienst installieren und testen.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: "Die Beschreibung der Ereigniskennung" unterdr

  Alt 10. Mär 2006, 16:09
1. Vorschlag dies in die Code Library mit aufzunehmen
2. Das "If Assigned() Then" im Except Block kann weggelassen werden.
3. Es reicht ein .Free - FreeAndNil ist bei einer lokalen Variable eh nutzlos
4. Ich würde aussen um den Try Except Block ein Try/Finally Block bauen, welcher die "Reg" Instanz freigibt.

Es ist wirklich nicht möglich die Resource bei dem Service selber einzubinden und einfach den Service in der Registry anzugeben?
  Mit Zitat antworten Zitat
pduck

Registriert seit: 2. Mär 2006
11 Beiträge
 
Delphi 2006 Professional
 
#4

Re: "Die Beschreibung der Ereigniskennung" unterdr

  Alt 13. Mär 2006, 10:40
Zitat von Muetze1:
Es ist wirklich nicht möglich die Resource bei dem Service selber einzubinden und einfach den Service in der Registry anzugeben?
Ich habe mich so auf die Aussage eines Beispiels verlassen, dass ich es gar nicht proberit hatte Ja, es geht, einfach die RES-Datei in die Service-Exe reinkompilieren.

Danke, dass Du mich vom Schlauch runtergeholt hast
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: "Die Beschreibung der Ereigniskennung" unterdr

  Alt 3. Aug 2006, 18:13
Hallo, ich habe das selbe Problem mit der Ereignisanzeige.

Habe mir mit diesem XN Resource Editor eine Resource erzeugt und diese in mein Service eingebunden.

Code:
   00000000  |%1
So schaut der Eintrag in der Messagetable aus.

Ich schreibe meine Logs mit

LogMessage('TEST'); Leider kommt in der Ereignisanzeige immer noch
Zitat:
Die Beschreibung der Ereigniskennung ( 0 ) in ( MyProgram Service ) wurde nicht gefunden. Der lokale Computer verfügt nicht über die zum Anzeigen der Meldungen von einem Remotecomputer erforderlichen Registrierungsinformationen oder DLL-Meldungsdateien. Möglicherweise müssen Sie das Flag /AUXSOURCE= zum Ermitteln der Beschreibung verwenden. Weitere Informationen stehen in Hilfe und Support. Ereignisinformationen: MyProgram Service; Execute.
Ich habe auch versucht in dem ServiceAfterInstall Ereignis, den geposteten Code einzutragen, aber leider kennt mein Programm TWD_Config nicht. Ich bin mir auch nicht ganz sicher ob man das überhaupt braucht, wenn ich das Posting über mir richtig verstanden habe, dass man die Resource auch direkt in des Service einbinden kann.

Kann mir da vielleicht jemand helfen?
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
pduck

Registriert seit: 2. Mär 2006
11 Beiträge
 
Delphi 2006 Professional
 
#6

Re: "Die Beschreibung der Ereigniskennung" unterdr

  Alt 3. Aug 2006, 20:58
Also ohne den Registryeintrag geht es nicht, da sich hier das E-Log die Information herholt wie der Eintrag für den Service erstellt werden soll.

Der erste Block in dem Code:
Delphi-Quellcode:
   if Reg.OpenKey(STR_REGKEY_SVC + self.Name,False) then
      begin
        ImagePath:=Reg.ReadString(STR_REGVAL_IMAGEPATH);
        Reg.WriteString(STR_REGVAL_CONFIGFILE,ExtractfilePath(ImagePath) + TWD_Config.GetDefaultConfigFileName());
        Reg.CloseKey;
      end;
Erzeugt in meinem Programm nur einen weiteren Key für meine Konfigurationsdatei. Den brauchst Du nicht!!!

Was Du aber brauchst ist dieser Block, der den Verweis auf die Datei mit der Ressource gibt:
Delphi-Quellcode:
if Reg.OpenKey(STR_REGKEY_EVENTMSG + self.Name,True) then
      begin
        Reg.WriteString(STR_REGVAL_EVENTMESSAGEFILE,ExtractfilePath(ImagePath) + NWDServiceEventDLLName);
        Reg.WriteInteger(STR_REGVAL_TYPESSUPPORTED,7);
        Reg.CloseKey;
      end;
Wobei du anstatt NWDServiceEventDLLName = 'WDEventLogMsg.dll'; im String den Namen deiner Service-Exe angeben musst. Die Variable kannst Du natürlich auch umbenennen
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: "Die Beschreibung der Ereigniskennung" unterdr

  Alt 3. Aug 2006, 21:01
Nein, es sollte eigentlich nur 'test' drin stehen.

Ich konnte die Procedure von Dir nicht ganz übernehmen, da ich auch nicht genau wußte was denn nun da reingeschrieben werden soll. Ich soll da also den Pfad zu der Exe datei eingeben die den Service darstellt und die Resource enthält? Probier ich gleich mal aus.


Cool jetzt funktionierts.

Dankeschön für die Hilfe
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: "Die Beschreibung der Ereigniskennung" unterdr

  Alt 3. Aug 2006, 23:37
Zitat von Muetze1:
1. Vorschlag dies in die Code Library mit aufzunehmen
Gibt es doch schon bei den Tutorials. Zu dem noch ausführlicher und mit Demo: http://www.delphipraxis.net/internal...ct.php?t=88278
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: "Die Beschreibung der Ereigniskennung" unterdr

  Alt 4. Aug 2006, 09:03
Zitat von Luckie:
Zitat von Muetze1:
1. Vorschlag dies in die Code Library mit aufzunehmen
Gibt es doch schon bei den Tutorials. Zu dem noch ausführlicher und mit Demo: http://www.delphipraxis.net/internal...ct.php?t=88278
Das Tutorial ist datiert mit Juli und der Beitrag von Muetze war im März...
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: "Die Beschreibung der Ereigniskennung" unterdr

  Alt 4. Aug 2006, 13:06
Ups. Hab enicht gesehen, dass du das Thema wieder nach oben geholt hast. Aber eventuell hilft dir das Tutorial trotzdem.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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