„Usługa net start” i „sc start”. Jaka jest różnica?

70

Usługi można zatrzymać i uruchomić za pomocą dwóch poleceń w powłoce wiersza polecenia.

  1. usługa net start „jakaś usługa”
  2. sc uruchom „jakąś usługę”

jaka jest różnica między tymi poleceniami?

Starx
źródło

Odpowiedzi:

81

W systemie Windows NT oba polecenia mają dostęp do tego samego Menedżera usług. Różnica polega głównie na części widocznej dla użytkownika:

  • net jest starszy - w rzeczywistości od czasów MS-DOS i OS / 2.

    scpojawił się tylko z Windows NT (nie jestem pewien, która wersja) .

  • net może jedynie uruchamiać, zatrzymywać i wstrzymywać usługi.

    sc ma bardziej zaawansowane funkcje kontrolne, może sprawdzać stan, tworzyć i usuwać usługi, zmieniać ich konfigurację i zabezpieczenia: sc config beep start= demand

  • net działa tylko lokalnie.

    sc może być używany przez sieć: sc \\snow start rpcapd

  • net akceptuje nazwy wyświetlane: net start "Windows Firewall"

    sc zawsze wymaga nazwy usługi: sc start SharedAccess

grawitacja
źródło
82

Odpowiedź Grawity jest z pewnością pomocna, ale znalazłem zasadniczą różnicę między tymi poleceniami wyszczególnionymi na stronie http://cbfive.com/command-line-service-management-net-v-sc/ . W szczególności na tej stronie zauważono, że te dwa polecenia różnią się czasem : „sieć” jest synchroniczna, a „sc” asynchroniczna.

SC wysyła kontrolę do usługi, a następnie wraca do wiersza polecenia. Zwykle powoduje to, że SC START przywraca usługę do stanu START_PENDING. NET START zaczeka na usługę, którą zaczyna osiągać w pełni uruchomiony stan, zanim zwróci kontrolę w wierszu polecenia.

...

[L] ike SC START, SC STOP nie czeka na zatrzymanie usługi i tam często zwraca STOP_PENDING dla wielu operacji zatrzymania usługi. Z drugiej strony NET STOP poczeka na zatrzymanie usługi, zanim powróci do wiersza polecenia.

...

NET i SC mają różne wyobrażenia o tym, co uważają za warunki sukcesu. Pytanie SC ma na celu ustalenie, czy zakończyło się powodzeniem: „Czy udało mi się wysłać kontrolę zatrzymania do usługi?” Jeśli tak, niezależnie od tego, czy usługa zatrzymała się, to spełniłem warunek pomyślny. NET zadaje pytanie: „Czy usługa, którą próbowałem zatrzymać, zwróciła, że ​​zatrzymała się pomyślnie?” Jeśli tak, to spełnia warunek. Jeśli nie, bez względu na przyczynę, NET nie spełnia warunku pomyślnego zakończenia

Mattias Andersson
źródło
1
Ten interesujący szczegół. Może być przydatny w przypadku skryptów (zmienna% ERRORLEVEL%). Dzięki.
Sopalajo de Arrierez
1
ta odpowiedź jest dla mnie bardzo pomocna, ponieważ występują sporadyczne błędy skryptów podczas próby wyczyszczenia katalogu usługi po jego zatrzymaniu, ponieważ nie jest on w pełni zatrzymany.
johntrepreneur
chcę użyć „sc config”, czy to też asynchroniczne? czy istnieje sposób, aby plik wsadowy czekał na zakończenie zadania?
Piotr
3

Za ile warto, sc start / stop jest bardziej niezawodny niż net start / stop. Czasami net start / stop powodował, że usługa utknęła w stanie Start / Stopping, podczas gdy nigdy nie przyszło mi to do głowy z sc start / stop. Objaw uruchomienia / zatrzymania sieci występuje częściej, jeśli usługa została zabita (poprzez zadanie zadań), np. Próba uruchomienia usługi z uruchomieniem sieci po wykonaniu zadania.

Sójka
źródło
2

Pozostało powiedzieć, że jeśli procedura OnStart () usługi trwa zbyt długo, NET STARTwysyła polecenie zatrzymania do usługi i zwraca następujący błąd:

Usługa ServiceName uruchamia się ........

Nie można uruchomić usługi ServiceName.

Usługa nie zgłosiła błędu.

Więcej pomocy można uzyskać, wpisując NET HELPMSG 3534.

Dzieje się tak, chociaż usługa została uruchomiona i zatrzymana pomyślnie !!

Znalazłem też ten post tutaj, który może być interesujący: Usługa nie mogła zostać uruchomiona

Lumo
źródło