Проблемы безопасности записи в журнал событий с My.Application.Log.WriteException - PullRequest
0 голосов
/ 05 августа 2009

Я обрабатываю событие Application.UnhandledException в приложении WinForms, и мне нужно регистрировать исключения, попавшие туда. Мой app.config настроен для регистрации исключений в FileLog и EventLog.

Проблема в том, что при работе от имени пользователя без прав администратора EventLog не может быть записан из-за SecurityException - я получаю сообщение «Источник не найден, но не удалось найти некоторые или все журналы событий».

Я понимаю, почему - у пользователя нет разрешения на создание источника EventLog, но вопрос в том, как создать этот источник? Как я понимаю, я мог бы либо:

1) Создайте источник EventLog с помощью моего установщика, так как он работает от имени администратора. Как это сделать?

2) Создать из моего приложения, каким-то образом повысив разрешения? Но это даст подсказку UAC в Vista.

Каков наилучший способ создания источника EventLog приложения Windows на клиентском компьютере?

спасибо

1 Ответ

2 голосов
/ 05 августа 2009

Самый распространенный способ сделать это - ваш вариант 1.

Как это сделать, зависит от вашего установочного пакета, но вам необходимо:

  1. Убедитесь, что ваш установщик работает с повышенными правами доступа.
  2. Написать одну запись в этот источник журнала событий, ИЛИ
  3. Создайте раздел реестра для вашего источника событий напрямую

Когда ваш установщик записывает в журнал событий, источник будет создан и будет доступен не для администраторов.

С помощью WiX (Windows Installer Xml) вы можете сослаться на этот пост для непосредственного создания записи реестра источника событий.

...