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)