Я хочу прочитать журнал событий на удаленном компьютере, чтобы проверить ошибки во время тестирования. Вот соответствующий код:
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;
}
В настоящее время этот код вызывает исключение (Попытка выполнить несанкционированную операцию). Согласно MSDN , мне нужен EventLogPermission, но я изо всех сил пытался найти какие-либо примеры использования этого разрешения. У кого-нибудь есть пример как это сделать?
Редактировать: Ответ на комментарии
Спасибо всем за комментарии - вот дополнительная запрошенная информация:
Исключение выдается из оператора foreach
. В частности, при пошаговом выполнении кода он добавляется в шаг после того, как выделен in
. Кажется, мне удалось создать объект журнала событий, но я не могу получить доступ к записям в журнале событий.
Моя учетная запись не имеет разрешения на чтение журнала событий в целевой системе, но у меня есть учетные данные для учетной записи, которая имеет. При подключении вручную через средство просмотра событий есть возможность подключиться как другой пользователь. После этого вручную мой код запустился без проблем. Однако я не могу полагаться на то, чтобы делать это вручную при каждом запуске этой программы. Что мне нужно, это способ подключиться как другой пользователь программным путем. Я думал, что EventLogPermission
будет способом сделать это, но, возможно, есть другой способ. Если кто-нибудь знает, как подключиться к удаленному журналу от имени другого пользователя в C #, это именно то, что я искал.