2008-09-24 16 views
37

Tengo una aplicación que ha creado varias fuentes de registro de eventos personalizadas para ayudar a filtrar su salida. ¿Cómo puedo eliminar las fuentes personalizadas de la máquina SIN escribir ningún código como ejecutar un programa rápido usando System.Diagnostics.EventLog.Delete no es posible?Eliminación del origen del registro de eventos personalizados sin utilizar el código

He intentado utilizar RegEdit para eliminar las fuentes personalizadas de [HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSetXXX \ Services \ Eventlog], pero la aplicación actúa como si los registros todavía existieran detrás de las escenas.

¿Qué más me estoy perdiendo?

Respuesta

40

También creo que estás en el lugar correcto ... está almacenado en el registro, bajo el nombre del registro de eventos. Tengo un registro de eventos personalizado, debajo del cual hay varias fuentes de eventos.

HKLM \ System \ CurrentControlSet \ Services \ Eventlog \ LOGNAME \ LOGSOURCE1 HKLM \ System \ CurrentControlSet \ Services \ Eventlog \ LOGNAME \ LOGSOURCE2

Esas fuentes tienen una clave EventMessageFile, que es REG_EXPAND_SZ y apunta a:

C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ EventLogMessages.dll

Creo que si elimina la clave que es la fuente de registro, LOGSOURCE1 en mi ejemplo, debería ser todo lo que necesita.

Por lo que vale, lo intenté con .NET y eso es lo que hizo. Sin embargo, parece que cada registro de evento personalizado también tiene una fuente del mismo nombre. Si tiene un registro personalizado, eso podría afectar su capacidad para borrarlo. Tendría que eliminar el registro directamente, tal vez. Además, si su aplicación tiene un instalador, puedo ver que el nombre de la aplicación también puede registrarse como fuente en el registro de eventos de la aplicación. Un lugar más para limpiar.

+0

Eso lo tiene, eliminando la entrada bajo la clave de origen solucionado. Buen registro de eventos limpios y la aplicación recreó sus fuentes y las usa correctamente. ¡Gracias! – Wolfwyrd

+2

Odio hacer el registro, pero a veces es la única forma. Lamentablemente, no puede enumerar EventSources como puede EventLogs. Puede probar la existencia, proporcionar un nombre, pero no puede recorrerlos. –

+1

Usted puede obtener una lista de las fuentes de registro de eventos por el comodín con Get_ChildItem de Powershell "HKLM: \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ ..." -Nombre Si el violín esto en una lista separada por comas en un editor de texto , puede usarlo con el Cmdlet Remove-Eventlog-Source para eliminar múltiples orígenes de eventos a la vez. Muy útil si quieres eliminar fuentes con nombres similares. – needfulthing

3

Tal vez su aplicación es tolerantes a errores, lo que significa que comprueba si la fuente de registro de eventos ya está registrada y registra la fuente si no lo está.

Si este fuera el caso, su aplicación recrearía la (s) fuente (s) cada vez que se ejecutara, sin importar lo que haya hecho.

+1

que podrían ser parte de ella. El problema que estamos viendo es que en lugar de escribir en sus fuentes personalizadas, todo se va a volcar al registro de la aplicación. La fuente de este error fue corregida e intentamos limpiar el registro de eventos para que podamos comenzar de nuevo. – Wolfwyrd

23

¿Qué hay de usar Powershell?

Remove-EventLog -LogName "Custom log name" 

Remove-EventLog -Source "Custom source name" 
+0

No creo que esto haya sido soportado en PowerShell hace 7 años (parece haber sido lanzado con v3?) ¡Pero +1 para una solución moderna! – Wolfwyrd

4

pude sólo para eliminarla mediante el uso de:

[System.Diagnostics.EventLog]::Delete("WrongNamedEventLog"); 

en powershell

Cuestiones relacionadas