Я искал способ записи журналов событий на удаленной машине с использованием определенных учетных данных. Это будет использоваться для проверки использования моего приложения в домене (приложение выполняет различные серверные задачи, но может быть запущено с любого ПК в домене). Как требование, программа должна иметь возможность создавать журналы событий на указанном сервере с указанными учетными данными, с любого ПК в домене или ПК с VPN-подключением к домену.
В настоящее время у меня есть следующий код для создания журнала событий:
EventLog evntlog = new EventLog("Application");
evntlog.MachineName = "192.168.0.5";
evntlog.Source = "Application";
evntlog.WriteEntry("Test Log.", EventLogEntryType.Information, 11573);
Указанное выше пространство имен EventLog
не позволяет указывать учетные данные для подключения / удаленного компьютера.
Между тем EventLogSession
/ EventLogReader
делает, как показано ниже для получения журналов событий (это прекрасно работает для моего тестового сценария):
string query = "*[System/EventID=11573]";
EventLogSession session = new EventLogSession("192.168.0.5", domain, userName, userPass, SessionAuthentication.Default);
EventLogQuery evntquery = new EventLogQuery("Application", PathType.LogName, query);
evntquery.Session = session;
EventLogReader logReader = new EventLogReader(evntquery);
Я пытался найти способ записи записей, похожих на то, как они читаются выше, но не могу найти эквивалент (EventLog
не поддерживает Session
). Олицетворение также невозможно, так как программа будет указывать на другой домен полностью, без какого-либо доверия между ними.
Любая помощь будет принята с благодарностью.