Уникальная идентификация записи в журнале событий в C # - PullRequest
3 голосов
/ 23 августа 2011

В качестве фона я пытаюсь объединить записи журнала событий безопасности Windows с нескольких компьютеров в одну таблицу SQL, чтобы я мог составлять отчеты по ним.Это все работает в C #.

Но мне нужен способ более эффективно определить, видел ли я это событие раньше, поэтому мне не нужно делать сложный поиск в моей базе данных, чтобы увидеть, видел ли я каждую записьbefore.

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

Предоставляет ли .Net Framework какую-либо форму уникального идентификатора, которую я мог бы использовать для упрощения этого процесса?

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 24 августа 2011

Я не уверен, какой метод C # вы используете, но вы можете получить номер записи, который вы могли бы использовать (например, компьютер + журнал + номер записи).Я знаю, что вы можете получить номер записи в C # с помощью ManagementObjectSearcher (он же WMI), не уверенный в других API.

Вы также можете получить номер записи через win32 API:

Старый API: Структура EVENTLOGRECORD

Новый API: Элемент EventRecordID (SystemPropertiesType)

1 голос
/ 25 августа 2011

ОК, решил со всей вашей помощью. Возьмите метку времени, идентификатор события и имя компьютера, а затем создайте хеш-код MD5. Просто и легко индексируется. Производительность тоже очень высока.

0 голосов
/ 23 августа 2011

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

...