Leer el registro de eventos de forma remota con .NET

Quiero leer el registro de eventos en una computadora remota para verificar si hay errores durante las pruebas. Aquí hay un código relevante:

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 arroja una excepción (Intento de realizar una operación no autorizada). De acuerdo a MSDN, Necesito EventLogPermission, pero he tenido problemas para encontrar ejemplos de cómo usar este permiso. ¿Alguien tiene un ejemplo de cómo hacer esto?

Edit: Respuesta a los comentarios

Gracias a todos por los comentarios: aquí está la información adicional solicitada:

a excepción se produce desde laforeach declaración. Específicamente, al recorrer el código, se lanzó en el paso posterior a cuandoin está resaltado. 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í. 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 mediante programación. Pensé que elEventLogPermission sería la forma de hacerlo, pero tal vez haya otra forma. Si alguien sabe cómo conectarse a un registro remoto como un usuario diferente en C #, eso sería exactamente lo que estaba buscando.

Respuestas a la pregunta(2)

Su respuesta a la pregunta