информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Как записать entry в EventLog не перекомпилируя ресурсный message файл 19.07.07 05:10  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
Как известно, стандартная процедура включает описание текстового сообщения для каждого MessageId в .mc файле:

MessageId = 100
SymbolicName = EVMSG_INSTALLED
Language = English
The service was installed.

Однако легко увидеть, что для .NET аппликаций мессадж файл не перекомпилируется для любых юзеровских ID и сообщений.

Интересно то, что если "подсунуть" этот единый для .NET аппликаций DLL-модуль сообщений, C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll, для Win32 аппликации, то можно также записывать любые текстовые собщения для любых ID.

Например, WriteEventLog(EVENTLOG_INFORMATION_TYPE, EVMSG_ERROR, _T("some_service")) будет отправлять вполне нормальные сообщения в EventLog, где:

bool WriteEventLog(WORD wType, DWORD dwID, LPCTSTR msg)
{
bool rc = true;
HANDLE hEventSource = ::RegisterEventSource(NULL, _T("MyEvent"));

if (hEventSource) {
LPCTSTR strings[] = {msg};
if ( ! ::ReportEvent(
hEventSource, /* Handle of event source */
wType, /* Event type */
0, /* Event category */
dwID, /* Event identifier */
NULL, /* User Security IDentifer */
1, /* Number of strings to merge with message */
0, /* Size of binary data (in bytes) */
strings, /* Array of strings to merge with message */
NULL) /* Address of binary data */
)
rc = false;
::DeregisterEventSource( hEventSource );
}
else
rc = false;
return rc;
}

Вопрос:

Кто может подсказать, как написать .MC файл, чтобы без его перекомпилляции можно было
записывать в Windows EventLogлюбыекомбинации (ID, MESSAGE)?

Несложные эксперименты с мессадж файл C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll пдсказывают, что скорее всего Microsoft включил (зарезервировал) ну просто огромный блок типа:

MessageId = 1
Language = English
%1
.

MessageId =
Language = English
%1
.

< и т.д. до офигения, типа >

MessageId = 10000
Language = English
%1
.

Кто может подтвердить, что так и есть? Типа самый копи-пэйстнутый копи-пейст от Microsoft? ;)))

Спасибо.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach