Re: easy event log

From
Maxim Volkonovsky (2:5020/982.299)
To
Anton Batenev
Date
2002-07-03T17:50Z
Area
SU.WINDOWS.NT.PROG
Hello Anton!

Tuesday July 02 2002 10:50, Anton Batenev (2:5020/400) wrote to Maxim Volkonovsky:

 >> Есть ли простой способ программе записать cвое сообщение в event log?
 >> Т.е. без прописывания путей в registry, без возни с компиляцией и
 >> линковкой message table etc... Может есть какой системный event,
[...]
 AB>     HANDLE H = RegisterEventSource(NULL, App);
 AB>     if (!H)
 AB>         return;
 AB>     ReportEvent(H, T, 0, 0, 0, 1, 0, &((const char*)Msg), 0);
 AB>     DeregisterEventSource(H);
[...]

Вся беда в том, что при таком подходе (без создания message table и прописывания соответствующих свойств App в регистри) в Event Log появляется событие с Description следующего содержания:

=== Cut ===
The description for Event ID ( 0 ) in Source ( App ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. The following information is part of the event: XXX
=== Cut ===

где вместо XXX и фигурирует выводимая строка. Иметь такой довесок к каждой записи - мягко говоря бесит. (Кстати, любопытный факт: после деинсталляции приложения, пищущего в event log согласно правилам от MS, все оставленные этим приложением записи перестанут читаться).

Нашелся такой хакерский выход: в качестве EventMessageFile в регистри прописывается %SystemRoot%\\System32\\winlogon.exe, который есть на всех NT-compatible системах, и у которого в message table есть сообщение, соответствующее событию 0x400003e9, и состоящее только из "%1".


              Best wishes ! Max (aka MaxWolf)

--- GoldED+/W32 1.1.4.7
 * Origin: MaxWolf's mobile station (2:5020/982.299)