Запись в журнал событий Windows из расширения IE в защищенном режиме — сбой с отказом в доступе

В BHO, работающем в Internet Explorer в Windows 7 с включенным защищенным режимом, я пытаюсь записать в журнал событий Windows. Я пишу в источник, который уже существует, и он есть в журнале приложений, поэтому я не понимаю, почему это может быть заблокировано. Однако мой вызов System.Diagnostics.EventLog.WriteEntry("MySource", "Some message") завершается с ошибкой InvalidOperationException с сообщением "Не удается открыть журнал для источника "XXX". Возможно, у вас нет прав на запись". Трассировка стека показывает, что он находится в EventLog.OpenForWrite(String currentMachineName).

Отключение защищенного режима позволяет ему работать нормально.

По какой причине это не разрешено в защищенном режиме, и каким образом я могу зарегистрировать свой BHO как разрешенный для записи в журнал событий или иным образом заставить его работать?

Согласно этому сообщению вызов OpenForWrite () приводит к вызову UnsafeNativeMethods.RegisterEventSource(this.machineName, this.sourceName);, но документы для этого не помогли мне.

Я использую .net 2.0

Благодарю.

Размещено здесь: msdn_microsoft_ieextensiondevelopment


person Rory    schedule 11.08.2010    source источник


Ответы (1)


Если вам действительно нужно писать в системный журнал, я бы либо:

  • Создайте службу и отправляйте ей сообщения - если вы будете что-то регистрировать с какой-либо регулярностью, я бы сделал это. Но кто пишет кучу сообщений в системный журнал?
  • Запустите крошечное приложение без вывода сообщений с повышенным уровнем доверия в качестве процесса-брокера.

Пойдем со вторым вариантом. Несколько способов сделать это, но я дам вам одну идею. Запишите данные для регистрации в файл или в реестр в месте с низкой целостностью. Затем запустите небольшое приложение с повышенным уровнем доверия, которое собирает данные и записывает их. Это эффективно? Нет. Но если запись в системный журнал происходит очень редко, то со временем это приведет к наименьшим издержкам.

Сервисный подход будет менее очевиден для пользователя, но отнимет у компьютера небольшой кусок пирога.

См. раздел Запуск процессов из защищенного режима в Понимание и Работа в защищенном режиме Internet Explorer.

person Mark Williams    schedule 17.05.2011