De fout oplossen: Gebeurtenisbericht niet gevonden

Dit artikel helpt u bij het oplossen van de fout in Logboeken: Gebeurtenisbericht niet gevonden.

Oorspronkelijke productversie: Windows
Origineel KB-nummer: 166902

Symptomen

Het volgende foutbericht kan worden weergegeven voor gebeurtenissen in Logboeken:

De beschrijving voor gebeurtenis-id ( <####> ) in Bron (<toepassingsnaam>) kan niet worden gevonden. Deze bevat de volgende invoegtekenreeks(en): <de tekst van het bericht dat is vastgelegd door ReportEvent>.

Hieronder vindt u de mogelijke oorzaken en meer informatie over het oplossen van het probleem. De oorzaak kan een of meer van de volgende zijn:

Onjuiste bronnaamparameter wordt doorgegeven aan RegisterEventSource

Zorg ervoor dat de bronnaam in het register overeenkomt met wat wordt doorgegeven aan RegisterEventSource. Deze functie slaagt zelfs als de bron niet in het register wordt gevonden. De bronnaam in het register moet zich bevinden in een subsleutel van HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog.

Doorgaans wordt een toepassingsbron vermeld onder de subsleutel van de toepassing.

Pad naar .dll of .exe bestand in het register is onjuist

Controleer in de registerwaarde met de naam EventMessageFile gevonden op HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcenameof het pad naar het .dll of .exe bestand juist is en of de naam van het .dll of .exe bestand juist is. In dit geval kan de Logboeken-toepassing de bron van de berichtbronnen niet laden. Als u of een andere macro gebruikt %SystemRoot% , moet u ook het type REG_EXPAND_SZ registerwaarde gebruiken. Anders wordt de macro niet uitgevouwen.

De geregistreerde berichtbron is het verkeerde .dll of .exe bestand

Controleer in de registerwaarde met de naam EventMessageFile gevonden op HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcenameof het pad naar het .dll- of .exe-bestand het pad is dat de verwachte berichtbronnen bevat. Wees voorzichtig met het weergeven van een EventMessageFile zonder pad en het hebben van meerdere bestanden met dezelfde naam. Logboeken volgt de regels om de berichtbron te vinden met behulp van het zoekalgoritmen dat wordt beschreven in de opmerkingen voor de LoadLibrary-API.

Berichtresources zijn niet gebonden in de EventMessageFile-bron

Een versie van het logboekregistratievoorbeeld kan het RC-bestand niet opnemen als onderdeel van de build in het makefile. Als gevolg hiervan wordt het DLL-bestand gebouwd, maar worden er geen berichtbronnen opgenomen in de build. Sommige ontwikkelaars hebben geprobeerd om het .bin-bestand, dat uitvoer is van de berichtcomp compiler, op te nemen als de resource. De resource wordt niet correct aan het DLL-bestand gekoppeld. U moet het RC-bestand gebruiken dat wordt uitgevoerd vanuit de berichtcomp compiler, omdat de resource wordt gemarkeerd met de id 1 en type 11 (RT_MESSAGETABLE). Het is vereist voor Logboeken om de berichtresources te vinden.

Als u Visual C++ gebruikt om de EventMessageFile DLL te bouwen, moet u het RC-bestand dat wordt uitgevoerd vanuit de berichtcomp compiler toevoegen als bronbestand van het Visual C++-project. Visual C++ wordt in staat gesteld het RC-bestand te compileren en de resources vervolgens aan het DLL-bestand te koppelen.

Zorg ervoor dat de juiste id wordt doorgegeven aan de functie ReportEvent

Velen denken dat het letterlijke id-nummer in het .mc bestand de juiste id is. Het is niet zo, omdat de berichtcomppilatie bitwise OK's het ID-nummer in de LOWORD en bitgewijze OK's de ernst en faciliteit bits in de HIWORD. Een toepassing moet altijd de symbolische naam gebruiken in het headerbestand dat wordt uitgevoerd vanuit de berichtcomppilatie.

Controleer de MessageIdTypedef= instructie in het .mc bestand. Sommige voorbeeldbestanden .mc laten zien hoe u de MessageIDTypedef voor categorie-id's definieert WORD . Dit zorgt er echter voor dat gebeurtenis-id's de HIWORD. Als u dit probleem wilt oplossen, definieert u MessageIdTypedef= slechts één keer en stelt u het in op DWORD.

Zorg er ook voor dat de MC-opdrachtregel -c consistent wordt gebruikt voor de berichtbronnen en het headerbestand. De -c schakeloptie wordt een beetje ingeschakeld in de HIWORD van de bericht-id.

Logboeken is niet opnieuw gestart sinds u de vermelding EventMessageFile hebt toegevoegd

Logboeken slaat de DLL's op die worden geladen voor gebeurtenisbronnen. Als u het register hebt gewijzigd om een juiste map of bronnaam te geven nadat de logboeken zijn gestart, moet u Logboeken opnieuw starten.