Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737

Чтение журнала системных событий

30.10.2015, 01:05. Показов 4989. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть задача прочитать определенный раздел журнала событий и вывести инфу по некоторым из них(error и warning).
По примерам вт что получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const int BUFFER_SIZE = 20000;
 
 
void showEvents()
{
    HANDLE hEventLog;
    LPCTSTR logName = L"Application";
    EVENTLOGRECORD* eventInfo;
    DWORD noteSize, nextNoteSize, eventLogCounter = 0;
    BYTE buffer[BUFFER_SIZE];
 
 
    hEventLog = OpenEventLog(NULL, logName);
    if(logName == NULL)
        std::cout << "Could not open event log!";
 
    eventInfo = (EVENTLOGRECORD*)&buffer;
    GetOldestEventLogRecord(hEventLog, &eventLogCounter);
 
    std::cout << eventLogCounter;
 
    while(ReadEventLog(hEventLog, EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ,
                       0, eventInfo, BUFFER_SIZE, &noteSize, &nextNoteSize))
    {
        while(noteSize > 0)
        {
            std::cout << eventLogCounter++ << "   EVENT ID: " << std::setw(12) << eventInfo->EventID
                      << "  EVENT TYPE: "  << eventInfo->EventType << "  EVENT SOURCE: "
                      << (char*)((LPBYTE)eventInfo + sizeof(EVENTLOGRECORD)) << std::endl;
 
            noteSize -= eventInfo->Length;
            eventInfo = (EVENTLOGRECORD*)((LPBYTE)eventInfo + eventInfo->Length);
 
        }
        eventInfo = (EVENTLOGRECORD*)&buffer;
    }
}
Есть несколько вопросов:
- что выводит EVENT SOURCE? символ, который находится сразу за текущей структурой EVENTLOGRECORD?какую информацию это дает?
-OpenEventLog позволяет открыть только разделы Application и System, Security почему то не открывается, как это решить?
-Как на основе EVENTLOGRECORD, получить имя приложения/процесса, который внес эту запись в журнал.
Спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2015, 01:05
Ответы с готовыми решениями:

Чтение файла журнала событий старого формата (*.evt)
Есть необходимость написать просмоторщик файлов журналов событий. В том числе и файлов старого формата (*.evt) созданных, к примеру на...

Создание собственного журнала событий
Здравствуйте! Появилась задача создать для приложения собственный журнал событий. Поизучав тему, выяснил, что для создания журнала...

Реализация журнала ошибок и протоколирования событий
Добрый день, уважаемое сообщество. При написании выпускной работы появилась необходимость вести журнал ошибок работы программы, и...

4
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
30.10.2015, 08:53
Лучший ответ Сообщение было отмечено Хулиган как решение

Решение

Цитата Сообщение от Хулиган Посмотреть сообщение
- что выводит EVENT SOURCE? символ, который находится сразу за текущей структурой EVENTLOGRECORD?какую информацию это дает?
Event source - это источник события. Например, имя драйвера, который
сгенерировал данное событие. Разве не полезная информация ?

Цитата Сообщение от Хулиган Посмотреть сообщение
-OpenEventLog позволяет открыть только разделы Application и System, Security почему то не открывается, как это решить?
Для чтения нужна привилегия SE_SECURITY_NAME.
А писать в этот лог, если не ошибаюсь, может только система.

Цитата Сообщение от Хулиган Посмотреть сообщение
-Как на основе EVENTLOGRECORD, получить имя приложения/процесса, который внес эту запись в журнал.
Если в самой записи нет информации о процессе, то никак.
1
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
30.10.2015, 13:23  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Event source - это источник события. Например, имя драйвера, который
сгенерировал данное событие. Разве не полезная информация ?
Ну я так и думал, циклом вывел несколько следующих символов после event source и там оказалось имя

источник события, записан после(т.е. вне структуры) EVENTLOGRECORD
C++
1
(char*)((LPBYTE)eventInfo + sizeof(EVENTLOGRECORD))
перемещение на следующую запись
C++
1
eventInfo = (EVENTLOGRECORD*)((LPBYTE)eventInfo + eventInfo->Length);
но почему это работает? ведь eventInfo->Length знает только размер структуры EVENTLOGRECORD, а источник не явл. частью это структуры. Поэтому после этого действия мы должны перейти не на следующую запись, а к началу источника этой записи!?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
31.10.2015, 10:05
Цитата Сообщение от Хулиган Посмотреть сообщение
но почему это работает? ведь eventInfo->Length знает только размер структуры EVENTLOGRECORD, а источник не явл. частью это структуры.
Очевидно потому, что Length передает размер структуры + размер данных.
0
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 1
01.03.2020, 12:55
Подскажите пожалуйста, а как вывести имя после event source ? Можно пример
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2020, 12:55
Помогаю со студенческими работами здесь

DLL для Журнала Событий Windows
кто-нибудь знает подходящую DLL с пустым сообщением? Например &quot;%s&quot; чтобы было тупо. Очень нужна именно зарегистрированная DLL.. а пустое...

Обёртка системных событий
Может кто подсказать варианты как можно обернуть системные события? В других библиотеках которые попадались мне в руки это реализовано...

Отлавливание системных событий
Подскажите, как в Qt отлавливать системные события windows? Например мне нужно отловить событие изменения значений системного микшера...

Переопределение системных событий в C++ .NET
Всем привет. Ребята, может вопрос и лузерный, но все же задам, а то весь день копался но не могу найти ответ. Как мне переопределить...

Написать программу для перехвата и сортировки системных событий
Завтра курсовая , а кода как не было , так и нет. Последняя надежда на Вас , господа. Нужно написать программу , которая при запуске...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru