2009-08-17 3 views

ответ

7

услуги не должны быть запущены из командной строки. Сначала зарегистрируйте его (installutil/i service_path), затем начните с сетевого запуска или sc start.

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

+0

+1 для комментария о наличии главной точки входа в проект для НАЧАЛЬНОГО РАЗВИТИЯ. Поскольку Иван говорит, что служба может вести себя по-разному при запуске в качестве службы (разные учетные данные). –

+0

Каждая служба, которую я когда-либо писала, поддерживает параметр командной строки, который заставляет ее запускаться в качестве приложения в консольном режиме. Я использую/запускаю, но независимо от того, что вы используете, я полностью рекомендую эту модель. Это сэкономит вам часы разочаровывающей отладки. – Mark

3

Вы можете запустить или остановить службу по телефону:

net start "Service Name" 
net stop "Service Name" 

Для получения дополнительной информации см this technet article.

Это должно работать, если выполняются следующие условия:

  • Командная строка/пользователь имеет соответствующие разрешения для запуска службы. Это потребуется для ЛЮБОГО решения.
  • Служба установлена ​​и зарегистрирована правильно с системой. Мое подозрение в том, что это может быть преступником. Включена ли услуга в списке услуг?
+0

ОП уже пробовал это (и был в начальной ревизии). –

+0

Я отредактирую свой ответ, чтобы предоставить более подробную информацию. –

3

Убедитесь, что вы добавили установщика в службу Windows. Вы должны сделать это, чтобы утилита InstallUtil.exe работала. Вы можете увидеть, как это сделать here.

После установки установщика InstallUtil.exe можно использовать для установки и удаления вашей службы.

  • Установка:InstallUtil.exe <YourServiceExecutable>
  • Uninstall:InstallUtil.exe /u <YourServiceExecutable>

Чтобы начать и остановить службу, можно использовать решение Рида.

Если вы хотите получить фантазию, вы можете добавить в свою службу некоторую логику командной строки, которая позволит вам выполнить все это (install-and-start/stop-and-uninstall) непосредственно из вашей службы, то есть , вам больше не придется использовать InstallUtil.exe. Это решение - here.

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