Quiero leer el registro de eventos en una computadora remota para verificar si hay errores durante las pruebas. Aquí hay un código relevante:Leer el registro de eventos de forma remota con .NET
public bool CheckEventLogs(DateTime start)
{
EventLog myEventLog = new EventLog("CustomLog", "ServerName");
bool errorFound = false;
foreach (EventLogEntry entry in myEventLog.Entries)
{
if (entry.EntryType == EventLogEntryType.Error && entry.TimeGenerated >= start)
{
Console.WriteLine("Error in Event Log:\n" + entry.Message + "\n");
errorFound = true;
}
}
return errorFound;
}
Actualmente, este código produce una excepción (Se intentó realizar una operación no autorizada). De acuerdo con MSDN, necesito EventLogPermission, pero he estado luchando para encontrar ejemplos de cómo usar este permiso. ¿Alguien tiene un ejemplo de cómo hacer esto?
Editar: Respuesta a los comentarios
Gracias a todos por los comentarios - aquí está la información adicional solicitada:
Se inicia la excepción de la declaración foreach
. Específicamente, al recorrer el código que arrojó en el paso siguiente cuando se resalta in
. Parece que pude crear el objeto de registro de eventos pero no puedo acceder a las entradas en el registro de eventos.
Mi cuenta no tiene permiso para leer el registro de eventos en el sistema de destino, pero tengo credenciales para una cuenta que sí lo tiene. Cuando se conecta manualmente a través del visor de eventos, hay una opción para conectarse como otro usuario. Después de hacer esto manualmente, mi código se ejecutó sin problemas. Sin embargo, no puedo confiar en hacerlo manualmente cada vez que se ejecuta este programa. Lo que necesito es una forma de conectarme como otro usuario programáticamente. Pensé que el EventLogPermission
sería la manera de hacerlo, pero tal vez hay otra manera. Si alguien sabe cómo conectarse a un registro remoto como un usuario diferente en C#, eso sería exactamente lo que estaba buscando.
¿Qué línea arroja la excepción? El artículo de MSDN solo dice que necesita permiso para escribir; no dice nada sobre la lectura. – Gabe
¿Su cuenta de usuario tiene permiso para leer el registro de eventos en la máquina remota? Abra el Visor de eventos e intente conectarse a la computadora remota desde su máquina para verificar. –
Solo pruebo tu código y obtengo los registros del servidor remoto. Todo funciona bien – Polaris