Как получить новые журналы в EventLogEntyCollection? - PullRequest
0 голосов
/ 22 апреля 2010

Мне нужно отслеживать журналы событий безопасности на очень занятых контроллерах домена, которые генерируют сотни из них каждую минуту.

Я знаю, как использовать EventLog, EventLogEntry и EvenLogEntryCollection для открытия и чтения журнала событий сервера, но EvenLogEntryCollection может содержать ~ 300.000 событий, и он непрерывно (и очень быстро), поэтому я не могу рассчитывать на его индекс для поиска новых записей.

Пока единственное, что мне удалось придумать, - это сохранить метку времени последней обработанной записи в журнале, а затем итерировать выше EventLogEntryCollection, пока я не найду EventLogEntry, свойства TimeGenerated которого больше метка времени я сохранил; но ужасно медленно перебирать ~ 300.000 записей, чтобы найти новые.

Как я могу быстро найти новые записи в большом журнале событий?


Edit:

Я забыл упомянуть: мне нужно сделать это удаленно , а не на самом DC ...

1 Ответ

1 голос
/ 22 апреля 2010

Вы можете рассмотреть возможность использования инструментария управления Windows. Язык запросов WMI (WQL) позволяет вам указать свои ограничения. ManagementEventWatcher позволяет вам отвечать на события WMI.

Посмотрите здесь для примера типа запроса WQL, который вам нужен.

Вот как вы кодируете это:

WqlEventQuery wqlQuery = new WqlEventQuery(...);
ManagementEventWatcher watcher = new ManagementEventWatcher(wqlQuery);
watcher.EventArrived += new EventArrivedEventHandler(_Your_Event_Handler_);
watcher.Start();

// Do stuff.

watcher.Stop();
...