Est-ce que shutdown.exe est nécessaire pour arrêter Windows?

36

Le fichier est-il C:\windows\system32\shutdown.exenécessaire pour arrêter ou redémarrer Windows?

Mukul Kumar
la source
16
Essayez de renommer quelque chose d'autre et voir.
martineau
10
@MukulKumar Quelqu'un qui veut découvrir l'effet et sait qu'il peut très facilement l'inverser?
Jon Bentley
8
@theGreenCabbage: vous devez émettre shutdown -s -t 0- une simple shutdownaffiche uniquement l'aide.
LawrenceC
9
Débrancher l'ordinateur devrait l'éteindre, peu importe le nom du fichier.
David Starkey
7
@ DavidStarkey: "Arrêter" et "Arrêter" ne sont cependant pas la même chose.
Courses de légèreté avec Monica

Réponses:

31

Votre question provient bien sûr de votre réponse sur https://codegolf.stackexchange.com/a/24011/18907 , en particulier de votre kinokijufcommentaire sur la révision initiale de votre réponse.

Comme kinokijufdit, Windows n'est pas Unix. Sur Unices et Linux, shutdownest en effet impliqué dans le processus d'arrêt complet. C'est le programme qui envoie des messages d'avertissement réguliers aux utilisateurs connectés et qui écrit le /run/nologinfichier afin d'empêcher toute nouvelle connexion peu de temps avant l'heure d'arrêt prévue.

Sous Windows NT, ce n'est pas le cas.

L'action "Arrêter" sur le "bouton d'alimentation" du menu Démarrer de l'Explorateur Windows, l'option de menu "Arrêter" du Gestionnaire des tâches, REBOOT /Sde TCC ou de Take Command, ainsi que d'autres programmes d'application vous permettant d'éteindre le système. en appelant directement l'un des deux appels d'API Win32: InitiateSystemShutdownEx()ou ExitWindowsEx(). Ils ne font pas les choses indirectement en exécutant le shutdownprogramme. (Cela nécessite en réalité plus de code que d'appeler simplement l'appel de l'API Win32.) Le shutdownprogramme, lorsqu'il effectue un arrêt local, appelle également ces mêmes appels de l'API Win32.

C'est en fait winlogon, csrsset smssce sont les programmes qui ferment Windows NT. En particulier, c’est winlogonl’essentiel du travail de traitement des demandes d’arrêt différé.

Lectures complémentaires

JdeBP
la source
1
Vous êtes vraiment un interlocuteur sensé! J'ai aimé la façon dont vous avez retracé la situation réelle à travers mon profil.
Mukul Kumar
Notez que sur les systèmes Linux, la shutdowncommande n'est pas du tout impliquée dans le processus d'arrêt complet; s'il peut envoyer des messages d'avertissement ou toucher / exécuter / nologin, tout ce qu'il fait pour arrêter réellement consiste à envoyer la commande appropriée à systemd, init, etc., et à quitter. Le processus init ou son système de remplacement moderne effectue en réalité le travail d’arrêt du système.
Michael Hampton
Non, M. Hampton, l’envoi des messages et l’arrêt des ouvertures de session font partie intégrante de la procédure d’arrêt complet. N'allez pas penser que Linux a disparu comme par magie. Les pages de manuel de deux Linux shutdownsont sous vos yeux. Penser cela est aussi faux que le non-sens de l' introduction de Linux à TLDP qui dit que "UNIX n'est pas fait pour être arrêté". UNIX a en effet été conçu pour être fermé. Il existe de nombreux ouvrages au cours des 40 dernières années pour les professionnels UNIX qui couvrent toute la procédure, avec des messages d'avertissement destinés aux utilisateurs constituant la première étape.
JdeBP
Il y a même des livres pour les professionnels de Linux. Je brancherais le guide d’étude LPIC de Rod Smith , qui se trouve shutdownà la page 22, mais ce n’est pas dans ma bibliothèque. Désolé, M. Smith. (-: Ma bibliothèque contient des éléments tels que la référence SVR5 de Coffin (l’étape de mise en garde des utilisateurs décrite aux pages 355 et 683), un Guide de l’administrateur système SCO UNIX (avertissements destinés aux utilisateurs lors de la première étape de la fermeture, pages 52–53), et même de Fielder / L' administration système UNIX de Hunter (l'intégralité du chapitre 6 concerne l'arrêt, avec des avertissements aux utilisateurs au début du chapitre). On peut trouver de nombreux autres livres destinés aux professionnels couvrant ce sujet.
JdeBP
55

Non.

Explorer n'appelle pas cette commande lorsque vous quittez le menu Démarrer.

Il est possible d'arrêter le système avec un appel d'API Win32 (la réponse de @ JdeBP fournit d'excellents détails à ce sujet si cela vous intéresse). La commande est juste un moyen pratique de le faire à partir d'un script, d'une tâche planifiée ou de la boîte de dialogue Exécuter.

LawrenceC
la source
En fait, shutdown.exene fait même pas un arrêt gracieux.
kinokijuf
Attention à cette réponse! Explorer n'appelle pas cette commande, contrairement aux autres processus qui arrêtent ou redémarrent Windows: ce n'est pas simplement un moyen pratique de le faire si le script ou la tâche planifiée est un programme d'installation ou une tâche de maintenance planifiée de votre administrateur système.
Nigel Heffernan
1
Cela ne le rend pas "nécessaire", Nil. Voir le contexte de la question (qui ne figure pas dans la question, mais qui se trouve dans ma réponse et ce qui y est indiqué) pour la réfutation que l'interrogateur posait et son énoncé à shutdownl'origine. (Ces parties de) les programmes d'installation sont souvent écrits dans des langages compilés qui appellent simplement l'API Win32, soit dit en passant.
JdeBP
8

Comme expliqué par ultrasawblade (vote ascendant), l’arrêt du système est un appel de l’API Win32 à: ExitWindowsEx

Le lien contient également un exemple sur la façon d'implémenter un arrêt depuis C. Vous pouvez également le faire depuis C # en utilisant P / Invoke (Platform Invoke). pinvoke.net a un tas de signatures disponibles pour utilisation: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html

thepip3r
la source