Установленный Win Service не отображается в Service Manager - PullRequest
3 голосов
/ 24 февраля 2011

У меня есть служба Windows, созданная в c #.

Это относительно просто по сравнению с некоторыми другими, над которыми я работал.

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

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

Я пошел в «Просмотр»> «Пользовательские действия» и добавил свои первичные выходные данные в «Установка, фиксация, откат и удаление».

Проект собран, и я щелкнул правой кнопкой мыши проект и нажал Install.

Установка прошла успешно, я могу просмотреть службу на панели управления в разделе «Установка и удаление программ», но когда я захожу в Диспетчер служб ... ничего ...

Может ли кто-нибудь предоставить какую-либо информацию или что-либо еще, что может привести к тому, что успешно установленная служба НЕ отобразится в Диспетчере служб.

Ответы [ 4 ]

4 голосов
/ 24 февраля 2011

Простите, если это само собой разумеется, но вы не упомянули, какой код вы выполняете в своих пользовательских действиях.Ваша служебная сборка должна иметь класс, производный от System.Configuration.Install.Installer , и этот класс должен иметь атрибут [RunInstaller (true)].В этом классе вам нужно будет создать экземпляр System.ServiceProcess.ServiceInstaller и System.ServiceProcess.ServiceProcessInstaller , установить соответствующие параметры в этих экземплярах и добавить их в установщики.коллекция.Страницы MSDN ServiceInstaller и ServiceProcessInstaller имеют очень простой пример, но этого должно быть достаточно, чтобы получить доступ к нему, если это то, что нужно.

1 голос
/ 24 февраля 2011

Вы сказали, что добавили свой основной вывод в Install и т. Д. Но вы создали класс, производный от Installer, для фактической установки службы Windows? Я не говорю о самом проекте установки, но в вашем проекте должен быть класс установщика, который фактически устанавливает службу для вас.

В моем блоге была запись о создании инфраструктуры для легко устанавливаемых служб, в ней есть примеры создания класса isntaler.

http://blackrabbitcoder.net/archive/2010/10/07/c-windows-services-2-of-2-self-installing-windows-service-template.aspx

1 голос
/ 24 февраля 2011

Убедитесь, что вы указали какое-то значение в свойстве "Display name".

Используйте следующую команду "sc query <service_name>" из командной строки, чтобы проверить, правильно ли установлена ​​ваша служба Windows.Если вы не уверены в имени службы, используйте следующую команду "sc query state= all >c:\ServicesList.txt" после выполнения этой команды, найдите файл ServicesList.txt на диске C: \.

Если это тоже не работает, попробуйте поискатьимя сервиса в реестре под HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

0 голосов
/ 11 сентября 2013

В моем случае решение проблемы было простым, я забыл добавить в класс модификатор доступа Public.После добавления модификатора доступа сервис отображается в списке сервисов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...