Отправка событий ETW в глобальное приложение; Журнал

Я бы хотел, чтобы мое приложение отображало предупреждения и ошибки в глобальном журнале «Приложение» в средстве просмотра событий Windows. Я успешно следовал инструкциям Вот это помогло мне запустить и запустить ETW, но я вижу события, только когда я явно включаю ведение журнала через программу трассировки, и даже тогда они отображаются только в сгенерированном файле .etl, а не в глобальном журнале.

Как программно зарегистрировать и записать события в глобальный журнал приложений, чтобы при запуске приложения просмотра событий пользователи могли видеть события из моего приложения? Это вообще возможно? Короче говоря, я хочу закончить чем-то вроде скриншота ниже, просто с меньшим количеством необходимых фотоснимков:

введите описание изображения здесь

2

Решение

ETW кажется довольно сложным для вашей цели, вот процедура записи в журнал событий:

а) Один раз (вы обычно делаете это при установке приложения) Зарегистрируйте ваше приложение в качестве поставщика событий; только EventMessageFile запись действительно требуется:
— key = HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ Application \ MyCoolGame
— имя строки (REG_EXPAND_SZ) = EventMessageFile
— строковое значение = C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ EventLogMessages.dll

б) при запуске программы: Зарегистрировать источник события и получить ручку:

hEventLog = RegisterEventSource(NULL, lpszAppNameName);

в) Используйте Функция ReportEvent для записи записей в журнал событий:

TCHAR szLogBuffer[] = _T("Started new multiplayer server.");
const TCHAR *lpszEventStrings[2] = {szLogBuffer, NULL};
ReportEvent(hEventLog, EVENTLOG_INFORMATION_TYPE, 0, 1, NULL, 1, 0, lpszEventStrings, NULL)

г) при закрытии программы:

DeregisterEventSource(hEventLog);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]