|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.10.2013, 14:40 | #1 | |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
C++ Чтение событий из Windows Event Log + парсинг
Есть винда, есть некое событие, которое отписывается в журнал событий винды. Хочется получить содержимое, которое можно увидеть запустив "Просмотр событий" в администрировании, счёлкнуть на событие и внизу во вкладке "общее" будет что-то типо:
Цитата:
Код:
Глядение на http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx пока не помогает ... Такое ощущение, что pevlr->DataOffset хранит количество байт того самого, нужного текста. Вот только понять бы, за каким адресом указатель чара зафиксировать, чтобы по байтно считать данную инфу? ... |
|
14.10.2013, 14:49 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Скорее всего:
((LPBYTE) pevlr + pevlr->DataOffset); Аналогично и для StringOffset |
15.10.2013, 02:13 | #3 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
Это адрес от куда начать читать "pevlr->DataOffset"?
|
15.10.2013, 09:06 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Это адрес, где находятся данные, на которые ссылается DataOffset.
|
15.10.2013, 10:03 | #5 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
Как-то так?
char * mychar = (char*)((LPBYTE) pevlr + pevlr->StringOffset); std::cout << mychar << std::endl; не работает ... |
15.10.2013, 11:13 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Вполне возможно, что wchar_t.
Кроме того, надо смотреть на NumStrings - не у каждого события же есть тексты. |
15.10.2013, 11:56 | #7 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
Какая-то каша получается ...
Сделал: if (pevlr->DataLength > 0) { wchar_t * mychar = (wchar_t*)(pevlr + pevlr->DataOffset); std::cout << mychar << std::endl; } Получаю, например такое - "- Code: CORSVCC00000773- Call: CORSVCC00000755- PID: 00002404-TID: 00003552- CMD: C:\Windows\system32\vssvc.exe - User: Name: NT AUTHORITY\" А если через "просмотр событий посмотреть", то там текст "Служба VSS выключается из-за тайм-аута простоя. ". В принципе логика то прослеживается, но вот содержимое то ппц не то совсем ). И при чём, это сообщение одно из последний вывелось, НО в логах ещё пару десятков есть, которые под условие не попали почему то ... А у большинства других, вообще такое содержимое - "{A92DAB39-4E2C-4304-9AB6BC44E68B55E2}0000d1e75139080e65 4e30d044b2bf40415900000904" как будто какое-то значение реестра ... |
15.10.2013, 12:02 | #8 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
Едрит копать ... Это ключи софтин, с которыми произошли события ... Это нужно парсить выводы (wchar_t*)(pevlr + pevlr->DataOffset), потом лезть в реестр, смотреть что это за приложение глюкнуло?! MS не могли ещё сложнее придумать писать логи? ппц ...
Но вот вопрос, как же само содержимое, которое в "просмотр событий" так лаконично отображается в окне "Общие", получить то? ;( |
15.10.2013, 16:00 | #9 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Эти данные могут быть все что угодно, в смысле необязательно ключи реестра.
У каждого события есть источник и код. По этому коду из этого источника вытаскивается ТЕКСТ ошибки. Далее, в этом тексте могут быть аргументы типа %1, %2, %3 и так далее, на место которых подставляются строчки из StringOffset. В конце пишется свободный текст, тот самый из DataOffset. Нигде нет гарантии, что эти данные будут вообще текстом, хотя обычно они тоже текст. Посмотрите функцию ReportEvent() |
29.04.2014, 19:28 | #10 |
Новичок
Джуниор
Регистрация: 23.09.2012
Сообщений: 2
|
Удалось ли?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Парсинг логов Xorg.*.log | FLEXO_187 | Помощь студентам | 0 | 25.09.2013 20:01 |
Журнал событий Windows | HyperZen | Общие вопросы Delphi | 6 | 16.05.2011 11:04 |
Чтение "Просмотр событий" | W0LF | Общие вопросы Delphi | 1 | 08.05.2010 23:12 |
Что мне выдает event log в Delphi 2009 ? | Polotenchik | Общие вопросы Delphi | 4 | 03.07.2009 17:52 |
Эмуляция событий в Windows | skeletishe | Общие вопросы Delphi | 1 | 26.03.2009 17:58 |