Question

Dans le journal des événements système est un événement avec les détails suivants:

Source: Kernel-General
Event ID: 1
Details: The system time has changed to ‎2010‎-‎07‎-‎17T02:58:20.285000000Z from ‎2010‎-‎07‎-‎17T02:58:20.285868600Z.

Le EVENTLOGRECORD a également un 1 pour le champ EventID, il correspond à ce que nous voyons dans la visionneuse du journal des événements.

Jusqu'à présent, si bon.

Le problème est, quand vous regardez dans advapi32.dll qui est où cette source reçoit des messages de partir, vous voyez ceci:

ID:01000001
String: The system time has changed to %1 from %2.

Comment le journal des événements Viewer sait par magie ajouter ces bits supplémentaires à l'ID pour trouver la chaîne de droite? Pas toutes les chaînes d'événements ont que peu supérieur, et certains ont d'autres bits supérieurs définis.

Appel FormatMessage avec 1 échoue. Appellant avec x01000001 réussit. Mais ce n'est pas ce que l'enregistrement du journal des événements contient ...: (

Aucun docs que je peux trouver en discuter du tout (autre que décrivant le format d'ID qui indique l'erreur / gravité / installation / bits de code).

Était-ce utile?

La solution

Comme vous, je ne le trouve pas documenté nulle part, mais il semble que des cartes Event Viewer membre de EventType de la structure EVENTLOGRECORD à Gravité bits de l'identifiant de la table de message.

Ainsi, par exemple, un événement Service Control Manager 7035 est de type « Information », qui associe à Gravité valeur 1, ce qui donne un ID de message de 0x40001B7B, ce qui est bien le texte que l'Observateur d'événements affiche de netevent.dll: Le service% 1 a été envoyé avec succès% 2 contrôle

.

De même, l'événement 7000 est de type "erreur", la cartographie à Gravité 3 et un ID de message de 0xC0001B58: Le service% 1 n'a pas pu démarrer en raison de l'erreur suivante:% n % 2

Bien sûr, cela ne correspond pas tout à fait avec votre exemple; vous que vous avez votre 0 et de 1 dans le bon endroit?

Autres conseils

Soi-disant, dans Windows XP et plus tôt l'ID de l'événement a été directement mis en correspondance avec l'ID de message dans la table des messages. Avec Vista et plus tard, il y a deux façons que l'ID d'événement peut être associé à l'ID de message.

  1. Qualifiers événement (ce qui est probablement ce qui ressemble à la gravité étant masqué comme Brian initialement mentionné)
  2. Modèle de Windows événement ressource

Cet article décrit les deux façons plus en détail: https://github.com/libyal/libevtx/blob/master/documentation/Windows%20XML%20Event%20Log%20 (EVTX) .asciidoc # message chaîne identificateur

Ce « Le temps du système a changé ... » événement en particulier, Windows 10 utilise le modèle de l'événement de ressources Windows. Si vous lookup la clé EventMessageFile, dans le registre, pour cet événement (en fonction de la source d'événement = Microsoft Windows Kernel-général), vous trouvez la DLL du fournisseur.

Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ System \ Microsoft-Windows Kernel général

Vous pouvez alors utiliser l'événement Windows utilitaire pour regarder le contenu de la dll fournisseur (en ajoutant la / g: true drapeau affiche le texte du message):

wevtutil gp Microsoft Windows Kernel-général / ge: true

Les spectacles de sortie qui Event ID 1 avec un groupe de 5 l'événement a un ID de message = 16777217 (0x01000001).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top