"Net start service" e "sc start". Qual è la differenza?


70

I servizi possono essere arrestati e avviati utilizzando due comandi nella shell del prompt dei comandi.

  1. servizio net start "alcuni servizi"
  2. sc start "alcuni servizi"

qual è la differenza tra questi comandi?

Risposte:


81

In Windows NT, entrambi i comandi accedono allo stesso Service Manager. La differenza è principalmente nella parte visibile all'utente:

  • net è più vecchio - dai tempi di MS-DOS e OS / 2, in effetti.

    scè apparso solo con Windows NT (non sono sicuro di quale versione) .

  • net può solo avviare, arrestare e mettere in pausa i servizi.

    sc ha controlli più avanzati, può interrogare lo stato, creare ed eliminare servizi, cambiarne la configurazione e la sicurezza: sc config beep start= demand

  • net funziona solo localmente.

    sc può essere utilizzato in rete: sc \\snow start rpcapd

  • net accetta i nomi visualizzati: net start "Windows Firewall"

    sc richiede sempre un nome di servizio: sc start SharedAccess


82

La risposta di Grawity è sicuramente utile, ma ho trovato una differenza fondamentale tra questi comandi dettagliata su http://cbfive.com/command-line-service-management-net-v-sc/ . In particolare, questa pagina nota che questi due comandi differiscono nei loro tempi : "net" è sincrono e "sc" è asincrono.

SC invia il controllo al servizio e quindi torna al prompt dei comandi. Ciò comporta in genere SC START che restituisce il servizio in uno stato di START_PENDING. NET START attenderà che il servizio stia iniziando a raggiungere uno stato completamente avviato prima di restituire il controllo al prompt dei comandi.

...

[L] ike SC START, SC STOP non attende che il servizio si arresti e lì farà spesso STOP_PENDING per molte operazioni di arresto del servizio. NET STOP invece attenderà l'arresto del servizio prima che ritorni al prompt dei comandi.

...

NET e SC hanno idee diverse su quelle che considerano condizioni di successo. La domanda che SC chiede di stabilire se ha avuto esito positivo è "Ho inviato correttamente un controllo di arresto al servizio?" NET pone la domanda: "Il servizio che ho tentato di interrompere ha restituito che si è arrestato correttamente?" In caso affermativo, ha soddisfatto la condizione. In caso contrario, indipendentemente dal motivo, NET non riesce a raggiungere la condizione corretta


1
Un dettaglio interessante, questo. Potrebbe essere utile sapere per i casi di script (variabile% ERRORLEVEL%). Grazie.
Sopalajo de Arrierez,

1
questa risposta è molto utile per me poiché sto riscontrando errori di scripting intermittenti nel tentativo di pulire la directory del servizio dopo averla interrotta poiché non è stata completamente arrestata.
johntrepreneur,

voglio usare "sc config", è anche quello asincrono? c'è un modo per un file batch di attendere fino al completamento dell'attività?
Pietro,

3

Per quello che vale, ho trovato sc start / stop più affidabile di net start / stop. A volte net start / stop fa sì che il servizio rimanga bloccato in uno stato di avvio / arresto, mentre ciò non mi è mai accaduto con sc start / stop. Il sintomo di avvio / arresto della rete tende a verificarsi più spesso se il servizio è stato interrotto (tramite taskkill), ad esempio il tentativo di avviare il servizio con net start dopo taskkill.


2

A sinistra per dire che se la routine OnStart () di un servizio impiega troppo tempo, NET STARTinvia un comando di arresto al servizio e restituisce il seguente errore:

Il servizio ServiceName sta iniziando ........

Impossibile avviare il servizio ServiceName.

Il servizio non ha segnalato un errore.

Ulteriori informazioni sono disponibili digitando NET HELPMSG 3534.

Questo succede anche se il servizio è stato avviato e interrotto correttamente !!

Ho anche trovato questo post qui, che potrebbe essere interessante: impossibile avviare il servizio

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.