2013-03-20 4 views
4

У меня есть следующий код для регистрации моей службы Windows, которую я нашел в ходе онлайн-исследований. , сделанный внутри моего класса обслуживания перед его инициализацией, как показано ниже.Регистрация службы Windows

public GBBInvService() 
     { 
      InitializeComponent(); 
      if (!System.Diagnostics.EventLog.SourceExists("MyLogSource")) 
       System.Diagnostics.EventLog.CreateEventSource("MyLogSource", 
                     "MyDoLog"); 
      eventLog1.Source = "MyLogSource"; 
      eventLog1.Log = "MyDoLog"; 
     } 

код при регистрации:

eventLog1.WriteEntry("GBBInvService Service Started"); 

я однако информирована против нашего консультанта. Его комментарии ниже:

Я бы не хотел, чтобы служба создавала источники событий во время выполнения. Это требует, чтобы служба работала с высокими привилегиями (то есть больше доступа к компьютеру, чем это действительно необходимо). Настройка источников журнала событий Windows - это действительно задание времени установки. Вы можете добавить установщик журнала событий в файл установщика проекта (вместе со службой установки), а затем источник событий всегда будет существовать

Проблема с этим советом заключается в том, что я не смог найти примеры, где журналы создаются в файлах установщика проекта. Я также попытался переместить часть создания журнала в мой установщик проекта, но потом он не позволит мне звонить или записывать в eventlog1 со страницы веб-службы cs. Он также предложил log4net, но это то, что является новым для меня и довольно сложно понять. Я по-прежнему очень новичок в службах Windows, которые только что завершили мой первый проект службы Windows, и были бы очень благодарны за любое направление для создания журналов в установщике проекта, записи на него со страницы обслуживания cs или любых головок в log4net.

ответ

6

Ваш консультант прав, это плохая идея сделать это в рамках службы.

Вот как вы можете создать источник событий в инсталлятора:

http://blogs.msdn.com/b/helloworld/archive/2008/12/11/creating-an-event-log.aspx?Redirected=true

Короткая версия: Подкласс Installer, а также создавать источники журнала событий в конструкторе подклассы установки.

UPDATE

Из ссылки:

После установки службы выполняются, журнал 'зарегистрирован', но пока еще не создан. Чтобы создать его, нужно записать одно событие. Если служба работает с использованием учетной записи с ограниченным доступом, эта учетная запись может не иметь достаточного разрешения на безопасность для записи первого журнала, поскольку журнал необходимо создать.

В примере кода не отображается одно событие. Убедитесь, что вы это делаете.

При установке службы, пользователь должен запустить программу установки в качестве администратора

Убедитесь, что вы запустили программу установки в качестве администратора.

Ваш комментарий:

служба не заводилась.

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

+0

Благодарим вас за это. Если вы посмотрите на ссылку, которую вы указали выше, есть комментарий пользователя прямо в нижней части страницы. Я столкнулся с такой же проблемой. Служба не запускается. – user1270384

+0

Добавлено обновление, которое может объяснить, что служба не запускается. –

Смежные вопросы