Problembehandlung des Fehlers: Ereignismeldung nicht gefunden

In diesem Artikel erfahren Sie, wie Sie den Fehler in Ereignisanzeige: Ereignismeldung nicht gefunden beheben.

              Originalversion des Produkts: Windows
Ursprüngliche KB-Nummer: 166902

Problembeschreibung

Die folgende Fehlermeldung kann für Ereignisse in Ereignisanzeige angezeigt werden:

Die Beschreibung für die Ereignis-ID ( <####> ) in der Quelle (<Anwendungsname>) wurde nicht gefunden. Sie enthält die folgenden Einfügezeichenfolgen: <den Text der meldung, die von ReportEvent> protokolliert wird.

Im Folgenden sind die möglichen Ursachen und weitere Informationen zum Beheben des Problems aufgeführt. Die Ursache kann eine oder mehrere der folgenden sein:

Falscher Quellnamenparameter wird an RegisterEventSource übergeben.

Stellen Sie sicher, dass der Quellname in der Registrierung mit dem übereinstimmt, was an RegisterEventSourceübergeben wird. Diese Funktion ist auch dann erfolgreich, wenn die Quelle nicht in der Registrierung gefunden wird. Der Quellname in der Registrierung sollte sich in einem Unterschlüssel von befinden HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog.

In der Regel wird eine Anwendungsquelle unter dem Unterschlüssel der Anwendung aufgeführt.

Der Pfad zu .dll oder .exe Datei in der Registrierung ist falsch.

Vergewissern Sie sich im HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcenameRegistrierungswert unter EventMessageFile , dass der Pfad zur .dll- oder .exe-Datei richtig und der Name der .dll- oder .exe-Datei korrekt ist. In diesem Fall kann die Ereignisanzeige Anwendung die Quelle der Nachrichtenressourcen nicht laden. Wenn Sie oder ein anderes Makro verwenden %SystemRoot% , müssen Sie außerdem den Registrierungswerttyp REG_EXPAND_SZ verwenden. Andernfalls wird das Makro nicht erweitert.

Registrierte Nachrichtenquelle ist die falsche .dll- oder .exe datei.

Überprüfen Sie in dem Registrierungswert namens EventMessageFile unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcename, dass der Pfad zur .dll- oder .exe-Datei der Pfad ist, der die erwarteten Nachrichtenressourcen enthält. Achten Sie darauf, einen EventMessageFile ohne Pfad aufzulisten und mehrere Dateien mit demselben Namen zu haben. Ereignisanzeige folgt den Regeln, um die Nachrichtenquelle mithilfe des Suchalgorithmus zu finden, der in den Kommentaren für die LoadLibrary-API dokumentiert ist.

Nachrichtenressourcen sind nicht in der EventMessageFile-Quelle gebunden.

Eine Version des Protokollierungsbeispiels konnte die RC-Datei nicht als Teil des Builds in die Makefile einschließen. Daher wird die DLL erstellt, aber es sind keine Nachrichtenressourcen im Build enthalten. Einige Entwickler haben versucht, die .bin-Datei, die vom Nachrichtencompiler ausgegeben wird, als Ressource einzuschließen. Die Ressource wird nicht ordnungsgemäß an die DLL gebunden. Sie müssen die RC-Datei verwenden, die vom Nachrichtencompiler ausgegeben wird, da sie die Ressource mit der ID 1 und dem Typ 11 (RT_MESSAGETABLE) markiert. Es ist erforderlich, dass Ereignisanzeige die Nachrichtenressourcen finden.

Wenn Sie Visual C++ zum Erstellen der EventMessageFile DLL verwenden, müssen Sie die RC-Datei, die vom Nachrichtencompiler ausgegeben wird, als Quelldatei des Visual C++-Projekts hinzufügen. Visual C++ wird aufgefordert, die RC-Datei zu kompilieren und dann die Ressourcen mit der DLL zu verknüpfen.

Stellen Sie sicher, dass die richtige ID an die ReportEvent-Funktion übergeben wird.

Viele denken, dass die in der .mc Datei gefundene Literal-ID die richtige ID ist. Dies ist nicht der Fall, da der Nachrichtencompiler bitweise ORs die ID-Nummer in den LOWORD und bitweise ORs den Schweregrad und Facility-Bits in der angibt HIWORD. Eine Anwendung sollte immer den symbolischen Namen in der Headerdatei verwenden, die vom Nachrichtencompiler ausgegeben wird.

Überprüfen Sie die MessageIdTypedef= Anweisung in der .mc Datei. Einige Beispieldateien .mc zeigen, wie für Kategorie-IDs definiert MessageIDTypedefWORD wird. Es bewirkt jedoch, dass Ereignis-IDs die HIWORDverlieren. Um dieses Problem zu beheben, definieren Sie MessageIdTypedef= nur einmal, und legen Sie es auf fest DWORD.

Stellen Sie außerdem sicher, dass die MC-Befehlszeile -c für die Nachrichtenressourcen und die Headerdatei konsistent verwendet wird. Der -c Schalter schaltet ein Bit in der HIWORD der Nachrichten-ID ein.

Ereignisanzeige wurde seit dem Hinzufügen des Eintrags EventMessageFile nicht neu gestartet.

Ereignisanzeige speichert die DLLs zwischen, die für Ereignisquellen geladen werden. Wenn Sie die Registrierung so geändert haben, dass nach dem Starten der Ereignisanzeige ein ordnungsgemäßer Verzeichnis- oder Quellname angegeben wird, müssen Sie Ereignisanzeige neu starten.