La descripción de la identificación del evento de la fuente no se puede encontrar

Cuando escribo un registro en el registro de eventos de Windows, obtengo el evento a continuación, ¿cuál es la causa raíz de este mensaje y cómo puedo solucionarlo? Muchas gracias

La descripción del evento ID 51001 de la fuente RRWS no se puede encontrar. O el componente que genera este evento no está instalado en su computadora local o la instalación está dañada. Puede instalar o reparar el componente en la computadora local.

Si el evento se originó en otra computadora, la información de la pantalla se debe guardar con el evento.

La siguiente información fue incluida con el evento:

registro de prueba messge

el recurso de mensaje está presente pero el mensaje no se encuentra en la tabla de cadena / mensaje

Obtuve este error después de crear un origen de evento en el Registro de la aplicación desde la línea de comando usando “EventCreate”. Este comando crea una nueva clave en: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application

Si nos fijamos en la clave que se ha creado (por ejemplo, SourceTest), habrá un valor de cadena denominado EventMessageFile , que para mí se estableció en %SystemRoot%\System32\EventCreate.exe .

Cambie esto a c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll

Elimine los valores de CustomSource y TypesSupported .

Esto debería detener el mensaje “La descripción de la identificación de evento ….”.

Un amigo mío tenía exactamente el mismo problema. Intentó todas las opciones descritas pero nada parecía funcionar. Después de muchos estudios, también de la descripción de Microsoft , concluyó para reiniciar el sistema. ¡¡Funcionó!!

Parece que el sistema operativo no actualiza en todos los casos la lista de fonts de eventos registrados. Solo después de un reinicio puede estar seguro de que las fonts del evento están registradas correctamente.

Conclusión: reinicia tu sistema!

Necesita crear un origen de evento y un archivo de mensaje para ello. El código se ve así:

 var data = new EventSourceCreationData("yourApp", "Application"); data.MessageResourceFile = pathToYourMessageFile; EventLog.CreateEventSource(data); 

Entonces necesitarás crear un archivo de mensaje . También hay este artículo que explica las cosas (no lo leí todo, pero parece bastante completo).

¿Qué tal una solución del mundo real?

Si todo lo que necesita es una forma “rápida y sucia” de escribir algo en el registro de eventos sin registrar “fonts personalizadas” (requiere derechos de administrador), o proporcionar “archivos de mensajes” (requiere trabajo y dolor de cabeza) simplemente haga esto:

 EventLog.WriteEntry( ".NET Runtime", //magic "Your error message goes here!!", EventLogEntryType.Warning, 1000); //magic 

De esta forma, estará escribiendo en un registro de “Aplicación” existente sin la molesta “No se puede encontrar la descripción del Identificador de evento 0”

Si quieres que se explique la parte “mágica”, publiqué sobre esto aquí

Use PowerShell para crear su registro de eventos y fuente:

 New-EventLog -LogName MyApplicationLog ` -Source MySource ` -MessageResourceFile C:\windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll 

Necesitará los mensajes dll para evitar el problema que está viendo.

También me enfrenté a un problema similar. Después de hacer mucha investigación, lo hice siguiendo, verifiqué los pasos según este artículo http://www.codeproject.com/Articles/4166/Using-MC-exe-message-resources-and-the-NT-event-lo Everything parecía estar en su lugar. Excepto una cosa … me di cuenta cuando tropecé con este msdn http://msdn.microsoft.com/en-us/library/windows/desktop/aa363661(v=vs.85).aspx

Como dice el último párrafo … “Si la aplicación llama a RegisterEventSource y pasa un nombre de fuente que no se puede encontrar en el registro, el servicio de registro de eventos utiliza el registro de la aplicación de manera predeterminada. Sin embargo, como no hay archivos de mensajes, el Visor de eventos no puede asignar ningún identificador de evento o categoría de evento a una cadena de descripción, y mostrará un error. Por este motivo, debe agregar un origen de evento único al registro de su aplicación y especificar un archivo de mensaje. ‘ Entonces mi nombre de aplicación en RegisterEventSource no coincidía con el nombre de la aplicación en el registro. Lo arreglé y ahora funciona … Por lo tanto, comprueba las entradas de tu registro si tienes este problema.

También tropecé con esto, aunque causado por otra posibilidad más: el identificador de evento (que estaba “oculto” en un #define ) estaba estableciendo la gravedad en el error (los dos bits de orden superior como se indica en los identificadores de eventos ). Como el Visor de eventos muestra el identificador de eventos (los 16 bits de orden inferior), no podría haber una coincidencia …

Como referencia, he reunido un conjunto de sugerencias basadas en mi propia investigación mientras solucioné problemas y solucioné esto:

  1. Si su entrada de registro no termina con ” el recurso de mensaje está presente, pero el mensaje no se encuentra en la tabla de cadena / mensaje ” (a diferencia de la pregunta original):

    • Significa que te falta información de registro
    • Verifique dos veces el nombre del origen del evento y las claves de registro
  2. Si necesita agregar / editar información del registro, recuerde:

    • Reinicie el Visor de eventos (como se indica en el elemento 6 de KB166902 y también por @JotaBe)
    • Si no funciona, reinicie el servicio Windows Event Log / EventLog (o reinicie el sistema, como lo indicó @BrunoBieri).
  3. Si no desea crear un recurso DLL personalizado, tenga en cuenta que los archivos de mensajes de eventos comúnmente disponibles tienen algunas advertencias:

    • Tienen una gran cantidad de identificadores que intentan cubrir la mayoría de los casos
      • .NET EventLogMessages.dll (como lo insinúa @Matt) sube a 0xFFFF
      • Windows EventCreate.exe “solo” sube a 0x3E9
    • Cada entrada contiene %1
      • Eso significa que solo se mostrará la primera cadena
      • Todas las cadenas pasadas a ReportEvent aún se pueden inspeccionar mirando los detalles del evento (seleccione el evento deseado, vaya a la pestaña Detalles y expanda EventData )
  4. Si sigues recibiendo ” no se puede encontrar ” en tus eventos registrados (pregunta original):

    • Verifique dos veces los valores de identificador de evento que se están usando (en mi caso fue la parte Calificadores del identificador de evento)
    • Compare los detalles del evento (seleccione el evento deseado, vaya a la pestaña Detalles y expanda Sistema ) con un ejemplo de trabajo

Para mí, el problema fue que mi perfil de destino se ajustó por accidente a “Perfil de cliente de .Net Framework 4”. Cuando reconstruí el servicio en cuestión usando el “.Net Framework 4”, ¡el problema desapareció!

Si abre el visor del registro de eventos antes de que se cree el origen del evento, por ejemplo, mientras instala un servicio, recibirá ese mensaje de error. No necesita reiniciar el sistema operativo: simplemente tiene que cerrar y abrir el visor de eventos.

NOTA: No proporciono un archivo de mensajes personalizados. La creación del origen del evento usa la configuración predeterminada, como se muestra en la respuesta de Matt .

Esto generalmente es causado por un progtwig que escribe en el registro de eventos y luego se desinstala o mueve.