web-dev-qa-db-fra.com

"service de démarrage net" et "sc start". Quelle est la différence?

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?

67
Starx

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.

    sc est uniquement apparu avec Windows NT (vous ne savez pas quelle version) .

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

    sc a des contrôles plus avancés, peut interroger l'état, créer et supprimer des services, changer 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

76
grawity

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 à la commande Invite. Cela se traduit généralement par SC START renvoyant le service dans l'état START_PENDING. NET START attendra que le service commence à être complètement démarré avant de renvoyer 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 de service . .NET STOP, d’autre part, attendra que le service s’arrête avant de revenir à la commande Invite.

...

NET et SC ont des idées différentes sur ce qu’ils considèrent être des conditions de réussite. La question SC demande de déterminer si elle a réussi est , "Ai-je bien envoyé un contrôle d’arrêt au service?" Si tel était le cas, que le service soit arrêté ou non, alors je satisfaisais la condition. 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 était le cas, il remplissait la condition. Si ce n’est pas le cas, quelle que soit la raison, NET échoue à la condition

77
Mattias Andersson

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 net de démarrage/arrêt a tendance à se produire plus souvent si le service a été tué (via taskkill), par exemple. essayer de démarrer le service avec net start après taskkill.

3
Jay

Reste à dire que si la routine OnStart () d'un service prend trop de temps, NET START envoie 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é

2
Lumo