“Service net start” et “sc start”. Quelle est la différence?

70

Les services peuvent être arrêtés et démarrés à l'aide de deux commandes dans Shell d'invite de commande.

  1. service net start "un service"
  2. sc démarrer "un service"

Quelle est la différence entre ces commandes?

Starx
la source

Réponses:

81

Sous Windows NT, les deux commandes accèdent au même gestionnaire de service. La différence réside principalement dans la partie visible par l'utilisateur:

  • net est plus ancien - à partir de l'époque de MS-DOS et OS / 2, en fait.

    scest apparu seulement avec Windows NT (pas sûr de quelle version) .

  • net ne peut que démarrer, arrêter et suspendre les services.

    sc dispose de contrôles plus avancés, peut interroger l’état, créer et supprimer des services, modifier leur configuration et leur sécurité: sc config beep start= demand

  • net ne fonctionne que localement.

    sc peut être utilisé sur le réseau: sc \\snow start rpcapd

  • net accepte les noms d'affichage: net start "Windows Firewall"

    sc nécessite toujours un nom de service: sc start SharedAccess

Grawity
la source
82

La réponse de Grawity est certainement utile, mais j'ai trouvé une différence fondamentale entre ces commandes détaillées sur http://cbfive.com/command-line-service-management-net-v-sc/ . En particulier, cette page indique que la synchronisation de ces deux commandes est différente : "net" est synchrone et "sc" est asynchrone.

SC envoie le contrôle au service, puis retourne à l'invite de commande. Cela a généralement pour résultat que SC START renvoie le service dans un état START_PENDING. NET START attendra que le service commence à être complètement démarré avant de rendre le contrôle à l'invite de commande.

...

[L] ike SC START, SC STOP n’attend pas l’arrêt du service et y retournera souvent STOP_PENDING pour de nombreuses opérations d’arrêt du service. Par ailleurs, NET STOP attend que le service s’arrête avant de revenir à l’invite de commande.

...

NET et SC ont des idées différentes sur ce qu’ils considèrent être des conditions de réussite. La question que le SC demande pour déterminer s’il a réussi est la suivante: «Ai-je bien envoyé un contrôle d’arrêt au service?» Si oui, que le service ait été arrêté ou non, j’ai satisfait à la condition réussie. NET pose la question suivante: «Le service que j'ai tenté de stopper a-t-il indiqué qu'il s'était arrêté correctement? Si tel n’est pas le cas, quelle que soit la raison, NET échoue à la condition de réussite

Mattias Andersson
la source
1
Un détail intéressant, celui-ci. Pourrait être utile de savoir pour les cas de script (variable% ERRORLEVEL%). Merci.
Sopalajo de Arrierez
1
cette réponse est extrêmement utile pour moi car je rencontre des erreurs de script intermittentes en essayant de nettoyer le répertoire de service après l'avoir arrêté car il n'est pas complètement arrêté.
johntrepreneur le
je veux utiliser "sc config", est-ce asynchrone aussi? un fichier de commandes peut-il attendre que la tâche soit réellement terminée?
peter
3

Pour ce que ça vaut, j’ai trouvé que sc start / stop était plus fiable que net start / stop. Parfois, le démarrage / arrêt du réseau entraînait le blocage du service dans un état de démarrage / arrêt, alors que cela ne m’était pas encore arrivé avec sc start / stop. Le symptôme de démarrage / d'arrêt du réseau a tendance à se produire plus souvent si le service a été tué (via taskkill), par exemple, lors d'une tentative de démarrage du service avec net start après taskkill.

Geai
la source
2

Reste à dire que si la routine OnStart () d'un service prend trop de temps, NET STARTenvoie une commande d'arrêt au service et renvoie l'erreur suivante:

Le service ServiceName démarre ........

Le service ServiceName n'a pas pu être démarré.

Le service n'a signalé aucune erreur.

Une aide supplémentaire est disponible en tapant NET HELPMSG 3534.

Cela se produit bien que le service ait été démarré et arrêté avec succès !!

J'ai aussi trouvé ce post ici, cela pourrait être intéressant: le service n'a pas pu être démarré

Lumo
la source