Я думаю, что было бы лучше добавить Источник журнала событий в установщик, но я бы также проверил, чтобы убедиться, что Источник журнала событий существует при запуске службы.Кроме того, вместо добавления источника журнала событий в конструктор вы, вероятно, захотите использовать одно из событий установщика.Я не делал этого раньше, но я думаю, что событие AfterInstall
выглядит как хорошее место для добавления источников журнала событий (дополнительную информацию см. В ответе на этот вопрос: Автоматический запуск службы Windows при установке ).
Причина использования службы установщика для добавления источника журнала событий заключается в том, что (как указывало @MusiGenesis) у вас больше шансов на доступ к безопасности, необходимый для создания источника журнала событий, когдаприложение устанавливается.Когда служба запущена, ее можно настроить на учетную запись, у которой нет разрешений на создание источников журнала событий.
В самой службе я бы проверил, чтобы убедиться, что источник журнала событий также существует.Если его нет, вы можете попытаться воссоздать его, а если эта попытка не удалась, вы можете предпринять любое действие, наиболее соответствующее вашим потребностям.Например:
- Записать сообщение об ошибке в файловую систему где-нибудь, указав, что ведение журнала для службы отключено
- Сгенерировать исключение, чтобы служба не запускалась (что должно вызыватьWindows для записи собственных записей журнала событий)
- Полностью отключить ведение журнала и т. Д.
Если вы проверите (и попытаетесь создать источник журнала событий, если он не существует) взатем вы получите дополнительное преимущество, заключающееся в том, что служба может допустить, чтобы пользователь или другая программа удаляли источник журнала событий, на который полагается ваша служба.