Можем ли мы отсортировать Windows EventLog с точностью до миллисекунды?

438
TonyG

Когда в одну и ту же секунду создается несколько журналов событий Windows, порядок сортировки / отображения может отличаться от порядка их записи. Индекс, кажется, в обратном порядке, в котором они были написаны: LIFO, а не FIFO.

Я написал код для чтения записей в журнале событий, и TimeGenerated и TimeWritten округляются до ближайшей секунды. У них нет разрешения в миллисекундах.

Итак, есть ли способ получить лучшее разрешение для объектов журнала событий Windows, для записи или чтения? Может быть, с переключателем реестра или кодом?

Одним из решений этой проблемы было бы не использовать журнал событий Windows для подобных данных, а наличие событий более высокого уровня указывают на журналы файлов с более подробной информацией. Другим решением кода было бы использование поля двоичных данных для хранения метки времени в тиках. Затем я могу использовать пользовательскую программу для чтения / сортировки журнала и использовать эти данные для более точного разрешения, когда оно доступно. Но я бы предпочел избежать этого хака, который в любом случае относится только к пользовательским записям.

Я предполагаю, что возникнет вопрос о том, «почему вы заботитесь» или «это не то, как следует использовать журнал». Давайте перейдем от этого к конкретным техническим ответам. Благодарю.

0

2 ответа на вопрос

1
TonyG

После исследования, и, как указано в моем вопросе, да, есть способ сделать это, используя байт [] поток RAWDATA: Просто преобразовать временную метку (длинный или DateTime) в массив байтов и сохранить это.

Нет, мы не можем использовать средство просмотра журнала событий по умолчанию для фильтрации, сортировки или просмотра. И нет, мы не можем отсортировать по ms по записям журнала, которые мы не создали, что подразумевалось в первой части моего вопроса, поэтому я присваиваю правильный ответ @spacenonymous.

Но вопрос в том, сможем ли мы отсортировать журнал, как в данных, а не в том, сможем ли мы использовать средство просмотра по умолчанию - как я сказал в ОП:

Другим решением кода было бы использование поля двоичных данных для хранения метки времени в тиках. Затем я могу использовать пользовательскую программу для чтения / сортировки журнала и использовать эти данные для более точного разрешения, когда оно доступно.

Итак, более правильный / уточненный ответ: «Да, для записей, которые мы создаем, это способ сделать сортировку / фильтр, но в противном случае нет».

0
spacenomyous

Отрицательная запись журнала событий регистрирует только с точностью до одной секунды

В 32-битной метке времени нет места для более высокого разрешения. Изменение этого параметра нарушило бы совместимость с приложениями, которые обращаются к журналу событий. LMiller7 6 лет назад 0
Не о размере временной метки, функция readeventlog возвращает объект eventlogrecord, который измеряется в секундах. Вам понадобится другая функция чтения, чтобы получить дополнительную информацию, если она доступна spacenomyous 6 лет назад 0

Похожие вопросы