Как создать пользовательский вид в средстве просмотра событий Windows с помощью API? - PullRequest
1 голос
/ 10 ноября 2011

Существует ли API для создания настраиваемого представления в средстве просмотра событий Windows?

Я хотел бы сделать это при установке с использованием NSIS, но если я не могу и есть какой-либо другой способ, я напишуплагин для него.

1 Ответ

0 голосов
/ 13 ноября 2011

Проблема не в NSIS, а в , как работает журнал событий , вам нужно установить DLL таблицы сообщений где-нибудь в системе и зарегистрировать ее в реестре.Эта DLL должна оставаться в системе, поскольку она используется средством просмотра журнала событий при просмотре журнала и не используется при регистрации сообщения!Этот дизайн действительно проблематичен для установщика.

Вероятно, лучше просто войти в простой текстовый файл в $ temp или $ exedir.

Если вы действительно хотите использовать Журнал событий ивы не возражаете против хаков, которые вы могли бы:

  • Поместить DLL таблицы сообщений в $ pluginsdir и зарегистрироваться / отменить регистрацию при запуске / завершении программы установки (в случае сбоя вы оставляете мусор в реестре!)
  • Используйте таблицу сообщений Microsoft / Windows (они не документированы, могут меняться от версии к версии (и пакеты обновления?), Поэтому вам придется тестировать каждую версию и конфигурацию Windows, которую вы поддерживаете!)

Код NSIS выглядит примерно так:

section

System::Call 'advapi32::RegisterEventSource(i0,t "Software Installation")i.r0'
#TODO: Check if $0 == 0 and display error message
System::Call '*(i,&t1000 "Hello world")i.r1'
IntOp $2 $1 + 4
System::Call '*$1(ir2)'
System::Call 'advapi32::ReportEvent(ir0,i ${EVENTLOG_ERROR_TYPE},i0,i 101,i0,i1,i0,ir1,i0)i'
System::Free $1
System::Call 'advapi32::DeregisterEventSource(ir0)'

sectionend
...