“网络启动服务”和“sc 启动”。有什么不同?

Sta*_*arx 77 windows command-line

可以使用命令提示符 Shell 中的两个命令停止和启动服务。

  1. 网络启动服务“一些服务”
  2. sc 启动“一些服务”

这些命令有什么区别?

小智 93

Grawity 的回答当然很有帮助,但我发现http://cbfive.com/command-line-service-management-net-v-sc/ 上详述的这些命令之间存在根本区别。特别是,这个页面注意到这两个命令的时间不同:“net”是同步的,而“sc”是异步的。

SC 将控制发送到服务,然后返回到命令提示符。 这通常会导致 SC START 以 START_PENDING 状态返回服务。 NET START 将等待它开始进入完全启动状态的服务,然后在命令提示符处返回控制权。

...

[L]像 SC START 一样,SC STOP 不会等待服务停止, 并且会经常返回 STOP_PENDING 以进行许多服务停止操作。 另一方面,NET STOP 将等待服务停止, 然后再返回到命令提示符。

...

NET 和 SC 对他们认为的成功条件有不同的看法。 SC 要求确定它是否成功的问题是,“我是否成功地向服务发送了停止控制?” 如果是这样,不管服务是否停止,那么我就满足成功条件。NET 提出以下问题:“我尝试停止的服务是否返回它已成功停止?” 如果是,那么它满足条件。如果没有,无论是什么原因,NET 都无法满足成功条件

  • 这个答案对我来说非常有帮助,因为我在停止服务目录后尝试清理服务目录时遇到间歇性脚本错误,因为它尚未完全停止。 (2认同)

use*_*686 90

在 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