
Службы можно останавливать и запускать с помощью двух команд в командной строке.
- служба net start "какая-то служба"
- sc начать "какую-то службу"
в чем разница между этими командами?
решение1
В Windows NT обе команды обращаются к одному и тому же Service Manager. Разница в основном в видимой для пользователя части:
net
более старая — фактически со времен MS-DOS и OS/2.sc
появился только с Windows NT(не уверен, какая версия).net
может только запускать, останавливать и приостанавливать службы.sc
имеет более продвинутые элементы управления, может запрашивать состояние, создавать и удалять службы, изменять их конфигурацию и безопасность:sc config beep start= demand
net
работает только локально.sc
можно использовать по сети:sc \\snow start rpcapd
net
принимает отображаемые имена:net start "Windows Firewall"
sc
всегда требует имя службы:sc start SharedAccess
решение2
Ответ Grawity, безусловно, полезен, но я обнаружил фундаментальное различие между этими командами, подробно описанными наhttp://cbfive.com/command-line-service-management-net-v-sc/. В частности, на этой странице отмечается, что эти две команды различаются по своему назначению.время:«net» — синхронный, «sc» — асинхронный.
SC отправляет управление службе, а затем возвращается в командную строку. Обычно это приводит к тому, что SC START возвращает службу в состояние START_PENDING. NET START будет ждать, пока запускаемая им служба не перейдет в полностью запущенное состояние, прежде чем вернетсяуправление в командной строке.
...
[Н]апример, SC START,SC STOP не ждет остановки обслуживания и будет часто возвращать STOP_PENDING для многих операций остановки службы. NET STOP, с другой стороны, будет ждать остановки службы. прежде чем он вернется в командную строку.
...
NET и SC по-разному понимают, что считается условиями успеха. Вопрос, который задает SC, чтобы определить, был ли он успешным, звучит так: «Успешно ли я отправил управление остановкой службе?» Если это так, независимо от того, остановилась ли служба, то я выполнил условие успешного завершения. NET задает вопрос: «Служба, которую я пытался остановить, вернула сообщение об успешной остановке?» Если это так, то она выполнила условие. Если нет, то независимо от причины NET не выполняет условие успешного завершения
решение3
Если это и ценно, я обнаружил, что sc start/stop более надежен, чем net start/stop. Иногда net start/stop приводил к тому, что служба застревала в состоянии Starting/Stopping, тогда как с sc start/stop у меня такого еще не случалось. Симптом net start/stop чаще возникает, если служба была завершена (через taskkill), например, при попытке запустить службу с помощью net start после taskkill.
решение4
Осталось сказать, что если процедура OnStart() службы выполняется слишком долго, NET START
она отправляет службе команду остановки и возвращает следующую ошибку:
Служба ServiceName запускается..........
Не удалось запустить службу ServiceName.
Служба не сообщила об ошибке.
Дополнительную справку можно получить, набрав NET HELPMSG 3534.
Это происходит, хотя служба была успешно запущена и остановлена!!
Я также нашел этот пост здесь, он может быть интересен: Служба не может быть запущена