"Net start service" und "sc start". Was ist der Unterschied?

70

Dienste können mit zwei Befehlen in der Eingabeaufforderungsshell gestoppt und gestartet werden.

  1. net start service "etwas service"
  2. sc start "etwas service"

Was ist der Unterschied zwischen diesen Befehlen?

Starx
quelle

Antworten:

81

In Windows NT greifen beide Befehle auf denselben Service Manager zu. Der Unterschied liegt hauptsächlich im vom Benutzer sichtbaren Teil:

  • net ist älter - aus der Zeit von MS-DOS und OS / 2.

    scerschien nur mit Windows NT (nicht sicher, welche Version) .

  • net kann nur Dienste starten, stoppen und anhalten.

    sc hat erweiterte Steuerelemente, kann den Status abfragen, Dienste erstellen und löschen, deren Konfiguration und Sicherheit ändern: sc config beep start= demand

  • net funktioniert nur lokal.

    sc kann über das Netzwerk verwendet werden: sc \\snow start rpcapd

  • net akzeptiert Anzeigenamen: net start "Windows Firewall"

    sc Benötigt immer einen Dienstnamen: sc start SharedAccess

Grawity
quelle
82

Die Antwort von Grawity ist sicherlich hilfreich, aber ich habe einen grundlegenden Unterschied zwischen diesen Befehlen festgestellt, der unter http://cbfive.com/command-line-service-management-net-v-sc/ beschrieben wird . Auf dieser Seite wird insbesondere darauf hingewiesen, dass sich diese beiden Befehle in ihrem Timing unterscheiden : "net" ist synchron und "sc" ist asynchron.

SC sendet die Steuerung an den Dienst und kehrt dann zur Eingabeaufforderung zurück. Dies führt normalerweise dazu, dass SC START den Dienst im Status START_PENDING zurückgibt. NET START wartet, bis der Dienst vollständig gestartet ist, bevor er an der Eingabeaufforderung die Steuerung zurückgibt .

...

[L] wie SC START wartet SC STOP nicht auf das Stoppen des Dienstes und gibt dort für viele Dienststoppvorgänge häufig STOP_PENDING zurück. NET STOP hingegen wartet darauf, dass der Dienst beendet wird, bevor er zur Eingabeaufforderung zurückkehrt.

...

NET und SC haben unterschiedliche Vorstellungen davon, was sie als Erfolgsbedingungen betrachten. Die Frage, die SC stellt, um festzustellen, ob es erfolgreich war, lautet: „Habe ich erfolgreich eine Stoppsteuerung an den Dienst gesendet?“ Wenn dies der Fall ist, habe ich unabhängig davon, ob der Dienst gestoppt wurde, die erfolgreiche Bedingung erfüllt. NET stellt die Frage: "Hat der Dienst, den ich zu beenden versucht habe, die erfolgreiche Beendigung gemeldet?" Wenn dies der Fall ist, hat er die Bedingung erfüllt. Wenn dies nicht der Fall ist, hat NET die erfolgreiche Bedingung nicht erfüllt

Mattias Andersson
quelle
1
Ein interessantes Detail, dieses. Könnte hilfreich sein, wenn Sie Skripts für Fälle erstellen (Variable% ERRORLEVEL%). Vielen Dank.
Sopalajo de Arrierez
1
Diese Antwort ist für mich sehr hilfreich, da bei dem Versuch, das Dienstverzeichnis nach dem Stoppen zu bereinigen, zeitweise Skriptfehler auftreten, da es nicht vollständig gestoppt wurde.
Johntrepreneur
ich möchte "sc config" verwenden, ist das auch asynchron? Gibt es eine Möglichkeit für eine Batch-Datei zu warten, bis die Aufgabe tatsächlich abgeschlossen ist?
Peter
3

Ich habe festgestellt, dass sc start / stop zuverlässiger ist als net start / stop. Manchmal verursachte ein Netto-Start / Stopp, dass der Dienst in einem Start- / Stopp-Zustand steckte, während mir dies mit sc start / stop noch nie in den Sinn kam. Das Netto-Start / Stopp-Symptom tritt in der Regel häufiger auf, wenn der Dienst beendet wurde (über Taskkill), z.

Jay
quelle
2

Wenn die OnStart () -Routine eines Dienstes zu lange dauert, wird NET STARTein Stoppbefehl an den Dienst gesendet und der folgende Fehler zurückgegeben:

Der ServiceName-Dienst wird gestartet.

Der ServiceName-Dienst konnte nicht gestartet werden.

Der Dienst hat keinen Fehler gemeldet.

Weitere Hilfe erhalten Sie, indem Sie NET HELPMSG 3534 eingeben.

Dies geschieht, obwohl der Dienst erfolgreich gestartet und gestoppt wurde !!

Ich habe auch diesen Beitrag hier gefunden, der interessant sein könnte: Der Dienst konnte nicht gestartet werden

Lumo
quelle