Résoudre l’erreur : Message d’événement introuvable

Cet article vous aide à résoudre l’erreur dans observateur d'événements : Message d’événement introuvable.

              Version d’origine du produit : Windows
Numéro de la base de connaissances d’origine : 166902

Symptômes

Le message d’erreur suivant peut s’afficher pour les événements dans observateur d'événements :

La description de l’ID d’événement ( <####> ) dans Source (<nom> de l’application) est introuvable. Il contient la ou les chaînes d’insertion suivantes : <le texte du message journalisé par ReportEvent>.

Vous trouverez ci-dessous les causes possibles et plus d’informations sur la façon de résoudre le problème. La cause peut être une ou plusieurs des causes suivantes :

Un paramètre de nom source incorrect est passé à RegisterEventSource

Vérifiez que le nom de la source dans le Registre correspond à ce qui est passé à RegisterEventSource. Cette fonction réussit même si la source est introuvable dans le Registre. Le nom source dans le Registre doit être dans une sous-clé de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog.

En règle générale, une source d’application est répertoriée sous la sous-clé de l’application.

Le chemin d’accès au fichier .dll ou .exe dans le Registre est incorrect

Dans la valeur de Registre nommée EventMessageFile , HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcenamevérifiez que le chemin d’accès au fichier .dll ou .exe est correct et que le nom du fichier .dll ou .exe est correct. Dans ce cas, l’application observateur d'événements ne parvient pas à charger la source des ressources de message. En outre, si vous utilisez %SystemRoot% ou une autre macro, vous devez utiliser le type de valeur de Registre REG_EXPAND_SZ. Sinon, la macro n’est pas développée.

La source du message inscrit est un fichier .dll ou .exe incorrect

Dans la valeur de Registre nommée EventMessageFile , HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcenamevérifiez que le chemin d’accès au fichier .dll ou .exe est celui qui contient les ressources de message attendues. Veillez à répertorier un EventMessageFile sans chemin d’accès et à avoir plusieurs fichiers portant le même nom. observateur d'événements suivez les règles pour rechercher la source du message à l’aide de l’algorithme de recherche documenté dans les commentaires de l’API LoadLibrary.

Les ressources de message ne sont pas liées dans la source EventMessageFile

Une version de l’exemple de journalisation n’a pas pu inclure le fichier .rc dans le cadre de la build dans le makefile. Par conséquent, la DLL est générée, mais aucune ressource de message n’est incluse dans la build. Certains développeurs ont essayé d’inclure le fichier .bin, qui est la sortie du compilateur de messages, comme ressource. Il ne lie pas correctement la ressource à la DLL. Vous devez utiliser le fichier .rc qui est généré par le compilateur de messages, car il marque la ressource avec un ID de 1 et le type 11 (RT_MESSAGETABLE). Il est nécessaire pour observateur d'événements de trouver les ressources de message.

Si vous utilisez Visual C++ pour générer la EventMessageFile DLL, vous devez ajouter le fichier .rc qui est généré à partir du compilateur de messages en tant que fichier source du projet Visual C++. Il indique à Visual C++ de compiler le fichier .rc, puis de lier les ressources à la DLL.

Vérifiez que l’ID correct est passé à la fonction ReportEvent

Beaucoup pensent que le numéro d’IDENTIFICATION littéral trouvé dans le .mc fichier est l’ID correct. Ce n’est pas le cas, car le compilateur de messages effectue des opérations d’organisation au niveau du bit le numéro d’ID dans les LOWORD unités d’organisation et les bits de gravité et de facilité dans .HIWORD Une application doit toujours utiliser le nom symbolique dans le fichier d’en-tête qui est généré par le compilateur de messages.

Vérifiez l’instruction MessageIdTypedef= dans le .mc fichier. Certains exemples .mc de fichiers montrent comment définir le MessageIDTypedef à WORD pour les ID de catégorie. Toutefois, les ID d’événement perdent le HIWORD. Pour corriger ce problème, définissez MessageIdTypedef= une seule fois et définissez-la sur DWORD.

Assurez-vous également que la ligne de commande MC -c est systématiquement utilisée pour les ressources de message et le fichier d’en-tête. Le -c commutateur s’active un peu dans le HIWORD de l’ID du message.

observateur d'événements n’est pas redémarré depuis que vous avez ajouté l’entrée EventMessageFile

observateur d'événements met en cache les DLL qu’il charge pour les sources d’événements. Si vous avez modifié le registre pour donner un nom de répertoire ou de source approprié après le démarrage de l’observateur d’événements, vous devez redémarrer observateur d'événements.