Ответы:
В Windows NT обе команды обращаются к одному и тому же диспетчеру служб. Разница в основном в видимой для пользователя части:
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
Ответ Гравити, безусловно, полезен, но я обнаружил принципиальную разницу между этими командами, подробно изложенную на http://cbfive.com/command-line-service-management-net-v-sc/ . В частности, на этой странице отмечается, что эти две команды различаются по времени : «net» является синхронным, а «sc» - асинхронным.
SC отправляет управление службе и затем возвращается в командную строку. Обычно это приводит к тому, что SC START возвращает сервис в состоянии START_PENDING. NET START будет ожидать, когда служба начинает переходить в полностью запущенное состояние, прежде чем она вернет управление в командной строке.
...
[L] ike SC START, SC STOP не ожидает остановки службы и будет часто возвращать STOP_PENDING для многих операций остановки службы. NET STOP, с другой стороны, будет ожидать остановки службы, прежде чем она вернется в командную строку.
...
NET и SC имеют разные представления о том, что они считают условиями успеха. Вопрос, который SC задает для определения того, был ли он успешным, звучит так: «Я успешно отправил управление остановкой в службу?» NET задает вопрос: «Служба, которую я пытался остановить, возвращала, что она успешно остановилась?». Если это так, то она удовлетворяла условию. Если это не так, независимо от причины, NET не сможет успешно выполнить условие
Я считаю, что sc start / stop более надежен, чем net start / stop. Иногда запуск / остановка сети приводили к зависанию службы в состоянии «Запуск / остановка», тогда как мне никогда не приходило в голову запускать / останавливать команду sc. Симптом net start / stop чаще всего встречается, если служба была убита (посредством taskkill), например, попытка запустить службу с помощью net start после taskkill.
Остается сказать, что если подпрограмма OnStart () службы занимает слишком много времени, NET START
отправляет команду остановки в службу и возвращает следующую ошибку:
Сервис ServiceName запускается ........
Служба ServiceName не может быть запущена.
Служба не сообщила об ошибке.
Дополнительную помощь можно получить, набрав NET HELPMSG 3534.
Это происходит, хотя служба была запущена и успешно остановлена!
Я также нашел этот пост здесь, который может быть интересным: служба не может быть запущена