Я обнаружил два способа получения записей журнала событий приложений с удаленного сервера.
<сильный>1. Использование объекта EventLog
string logType = "Application";
EventLog ev = new EventLog(logType,"rspl200");
EventLogEntryCollection evColl = ev.Entries
<сильный>2. Использование объекта ManagementObjectSearcher
ConnectionOptions co = new ConnectionOptions(); co.Username = "testA"; co.Password = "testA"; Область ManagementScope = new ManagementScope(@"\" + "machineName"+ @"\root\cimv2", co); область.Соединить();
Запрос SelectQuery = new SelectQuery(@"select * from Win32_NtLogEvent"); Параметры перечисления opt = новые Параметры перечисления(); опт.РазмерБлока = 1000;
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query,opt))
{
foreach (ManagementObject mo in searcher.Get())
{
// write down log entries
Console.Writeline(mo["EventCode"]);
}
}
Я могу легко получить удаленный журнал событий, используя метод № 1 (используя объект EventLog) без каких-либо исключений, связанных с безопасностью. Но, используя метод № 2 (с использованием объекта ManagementObjectSearcher), я получаю исключение с отказом в доступе.
На самом деле я хочу, чтобы журнал удаленных событий (только приложение, а также последний журнал, а не все журналы приложений) отображался в виде дерева, как показано ниже.
- ServerName
- Logs
+ Error
+ Information
+ Warning
Может ли кто-нибудь помочь мне в этом, чтобы узнать лучший способ от этого или любого другого?
Also the main thing is that user who reads remote logs may be in different domain than server.
Спасибо, Митеш Патель.