Poner datos XML en el registro de eventos de Windows

¿Cómo puedo escribir datos XML en el registro de eventos de Windows?

Me he dado cuenta de que hay una manera de insertar XML en el registro de eventos de Windows (y no simplemente rellenándolo en la descripción). El efecto es que solo aparece el mensaje de descripción en la vista General de Windows Vista. Puedes ver tus datos XML en la vista de Details .

Si selecciona el botón de opción Friendly , aparece debajo del nodo Event Data del Event Data . Si seleccionas la vista XML, puedes ver el XML.

Pensé que la matriz de bytes rawData en el método EventLog.WriteEntry() me permitiría hacer esto. Intenté rellenar la salida de XMLWriter en él. Eso coloca datos en el registro de eventos, pero se ve como binario en lugar de XML.

A menos que me equivoque, para escribir xml en el registro de eventos de Crimson / Vista, tendrá que crear y registrar un manifiesto que le dará los canales y eventos apropiados. Luego, debe comstackr el manifiesto utilizando el Comstackdor de mensajes (mc.exe) en el WindowsSDK .

Luego, si desea iniciar sesión desde C #, querrá crear un proveedor administrado para envolver la API de registro de eventos. Esto es un poco más difícil porque tendrá que usar PInvoke para obtener la API.

Hay publicaciones de blog sobre cómo hacer todo este proceso aquí .

Tiene un ejemplo en Windows SDK (ver 6.1) llamado EventProvider.
Es un proveedor de C # (necesita Vista y hasta el trabajo) que utiliza la nueva API de registro de eventos (también conocida como carmesí).
Esta muestra muestra cómo agregar datos personalizados (cantidad de otras cosas).

Para .Net 4.5 Busque en el nuevo EventSource, también permite generar el manifiesto automáticamente.