1. Двойное слово DWORD, имеющее имя CategoryCount, хранящее количество категорий, которые приложение собирается записывать в Журнал событий. С его помощью Журнал, читая файл сообщений, начиная с первого сообщения, будет знать, сколько сообщений является категориями.
2. Пара параметр-значение с именем TypesSupported, имеющая тип данных DWORD. Она присутствует в разделе источника, который имеет значение равное 7.
3. Две пары, указывающие местоположение файла сообщений. Их имена EventMessageFile и CategoryMessageFile. Тип данных — string. Если вы раз били файл сообщений на две библиотеки DLL, один для категорий и одиь для сообщений, значения этих пар должны быть заданы соответствующт образом. Журнал событий использует эти пары для поиска библиотек DLL содержащих строки, которые должны быть отображены.
Можно перевести сообщения в вашей библиотеке DLL на другой язык и поставлять с каждой локализованной версией свою DLL. Таким образом, локализация Журнала событий в значительной степени облегчается.
1. Откройте Microsoft Developer Studio.
2. Выберите File >• New.
3. Щелкните на Project Workspace.
4. Дайте проекту имя ELogger.
5. Из списка Туре выберите Console Application.
6. Щелкните на кнопке Create.
7. В пустой файл наберите код листинга 5.10.
8. Сохраните файл с именем Elogger.cpp и подключите его к проекту, выбрав Insert >• Files into Project и дважды щелкнув на Elogger.cpp.
Листинг 11
// расширения MFC |
#include <afx.h>
#include <afxext.h>
#include <afxwin.h>
#include <iostream.h>
#include <basetyps.h>
// Это файл заголовка, созданный компилятором сообщений
#include "EvntLog.h"
int main(int argc, char*argv[ ], char *envp[ ])
{
HANDLE hEventLog; //обработчик, возвращенный функцией RegisterEventSource
PSID lpUserSid=NULL; //идентификатор безопасности пользователя
//(необязательный параметр)
WORD wNumStrings; //количество строк, объединяемых с сообщением
DWORD dwDataSize=0; //размер двоичных данных в байтах
LPTSTR IpStrings[1]; //массив строк, объединяемых с сообщением
LPVOID lpRawData=NULL; // адрес двоичных данных
BOOL bReturn;
// Зарегистрировать источник событий, чтобы можно было в него записывать
if (!(hEventLog=RegisterEventSource( NULL, "EvntLog")))
{
delete IpStrings[0]; return (1);
}
// Запись события в виде предупреждения
bReturn=ReportEvent(hEventLog, EVENTLOG_WARNING_TYPE, EVCAT_TESTING, EVMSG_MEMORYl, IpUsersid, 0, dwDataSize, (LPCTSTR *) IpStrings, IpRawData);
// Запись события в виде ошибки
bReturn=ReportEvent(hEventLog, EVENTLOG_ERROR_TYPE, EVCAT_TESTING, EVMSG_MEMORY1, IpUserSid, 0, dwDataSize, (LPCTSTR *)IpStrings, IpRawData);
// Создать массив строк для записи в Журнал событий
// Одна созданная строка будет подставлена вместо %1
// в сообщении для Журнала событий
wNumStrings=l;
IpStrings[0] = new TCHAR[_tcslen("Комментарий к тесту")+!];
_tcscpy(IpStrings[0],"Комментарий к тесту") ;
// Запись события как информационного
bReturn=ReportEvent(hEventLog, EVENTLOG_INFORMATION_TYPE, EVCAT_TESTING, EVMSG_MEMORY2 ,
IpUserSid, wNumStrings, dwDataSize, (LPCTSTR *) IpStrings, IpRawData);
// Прекращение регистрации источника
if (!DeregisterEventSource(hEventLog))
{
delete IpStrings[0];
return (1);
}
delete IpStrings[0];
return(0);
}
Перед компиляцией добавьте поддержку MFC. Далее выполните следующие действия:
1. Выберите Project >• Settings.
2. Откройте вкладку General.
3. В списке Microsot Foundation Classes выберите Use MFC in a Static Library.
4. Щелкните на кнопке ОК.
Теперь можно скомпилировать программу и запустить ее. В процессе работы приложение Elogger.exe занесет сообщение в Журнал событий, которое можно затем увидеть с помощью программы Просмотр событий из раздела Администрирование.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.