“net start 服務”和“sc start”。有什麼不同?

“net start 服務”和“sc start”。有什麼不同?

可以使用命令提示字元 Shell 中的兩個命令來停止和啟動服務。

  1. 網路啟動服務“某些服務”
  2. sc 啟動“某些服務”

這些命令有什麼不同?

答案1

在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

答案2

Grawity 的答案當然有幫助,但我發現這些命令之間存在根本區別,詳細資訊請參見http://cb Five.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 都會失敗

答案3

就其價值而言,我發現 sc 啟動/停止比 net 啟動/停止更可靠。有時,網路啟動/停止會導致服務陷入啟動/停止狀態,而我在使用 sc 啟動/停止時從未遇到過這種情況。如果服務被終止(透過taskkill),則網路啟動/停止症狀往往會更頻繁地發生,例如在taskkill之後嘗試使用net start啟動服務。

答案4

剩下的就是如果服務的 OnStart() 例程花費太長時間,則NET START向服務發送停止命令並返回以下錯誤:

ServiceName 服務正在啟動中.....

ServiceName 服務無法啟動。

該服務沒有報告錯誤。

鍵入 NET HELPMSG 3534 可以獲得更多協助。

儘管服務已成功啟動和停止,但仍會發生這種情況!

我還在這裡找到了這篇文章,可能很有趣: 服務無法啟動

相關內容