У меня есть служба Windows, которую я устанавливаю с помощью InstallUtil.exe. Несмотря на то, что я установил для параметра Startup Method значение Automatic, служба не запускается при установке, мне приходится вручную открывать службы и нажимать Start. Есть ли способ запустить его через командную строку или через код Сервиса?
c#
windows-services
mickyjtwin
источник
источник
ServiceController
оператор using.ServiceInstaller
переменной в вашем классе. Такой класс должен реализоватьSystem.Configuration.Install.Installer
. См. Это руководство msdn для получения дополнительной информации.serviceInstaller
этоServiceInstaller
объект, на который ссылаетсяsender
обработчик событий, который обычно создается вServiceInstaller()
конструкторе. Поэтому вы можете добавитьServiceInstaller serviceInstaller = (ServiceInstaller)sender;
передusing
заявлением.После небольшого рефакторинга это пример полного установщика службы Windows с автоматическим запуском:
источник
Как насчет следующих команд?
источник
Программные варианты управления услугами:
StartService
метод. Это хорошо для случаев, когда вам нужно иметь возможность выполнять другую обработку (например, чтобы выбрать, какую службу).Start-Service
черезRunspaceInvoke
или путем создания собственногоRunspace
и использования егоCreatePipeline
метода для выполнения. Это хорошо для случаев, когда вам нужно иметь возможность выполнять другую обработку (например, для выбора какой службы) с гораздо более простой моделью кодирования, чем WMI, но зависит от установленного PSH.ServiceController
источник
Вы можете использовать следующую командную строку для запуска службы:
источник
Используйте ServiceController, чтобы запустить службу из кода.
Обновление: И более правильный способ запустить службу из командной строки - использовать команду «sc» ( Service Controller ) вместо «net».
источник
Несмотря на то, что я точно следовал принятому ответу, мне все равно не удалось запустить службу - вместо этого во время установки мне было выдано сообщение об ошибке, в котором говорилось, что только что установленная служба не может быть запущена, так как она не существует, несмотря на то
this.serviceInstaller.ServiceName
, что чем буквальный ...В конце концов я нашел альтернативное решение, использующее командную строку:
источник
Автоматический запуск означает, что служба запускается автоматически при запуске Windows. Как уже упоминали другие, чтобы запустить его из консоли, вы должны использовать ServiceController.
источник
Вы можете использовать
GetServices
метод класса ServiceController, чтобы получить массив всех сервисов. Затем найдите свою службу, проверивServiceName
свойства каждой службы. Когда вы найдете свою службу, вызовитеStart
метод, чтобы запустить ее.Вы также должны проверить
Status
свойство, чтобы увидеть, в каком состоянии оно уже находится перед вызовом start (оно может быть запущено, приостановлено, остановлено и т. Д.).источник
Вы испортили своего дизайнера. Повторно добавьте свой установочный компонент. У него должны быть установщик служб и установщик служебных процессов. ServiceInstaller со свойством Startup Method, установленным на Automatic, будет запускаться при установке и после каждой перезагрузки.
источник
Просто примечание: вы могли настроить свою службу по-другому, используя интерфейс форм, чтобы добавить установщик службы и установщик проекта. В этом случае замените место, где написано serviceInstaller.ServiceName, на «имя от дизайнера» .ServiceName.
В этом случае вам также не нужны частные члены.
Спасибо за помощь.
источник