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


Est le fichier C:\windows\system32\shutdown.exe nécessaire pour arrêter ou redémarrer Windows?


36
2018-03-14 02:48


origine


Essayez de le renommer autrement et voyez. - martineau
@MukulKumar Quelqu'un qui veut découvrir l'effet et sait qu'il peut très facilement l'inverser? - Jon Bentley
@leGreenCabbage: vous devez émettre shutdown -s -t 0- une plaine shutdown affiche uniquement l'aide. - LawrenceC
Le débranchement de l'ordinateur doit être désactivé, quel que soit le nom du fichier. - David Starkey
@DavidStarkey: "Arrêter" et "Arrêter" ne sont pas la même chose, cependant. - Lightness Races in Orbit


Réponses:


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

Comme kinokijuf dit, Windows n'est pas Unix. Sur les Unices et Linux, shutdown est 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/nologin fichier pour empêcher toute nouvelle ouverture de session 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" dans le menu Démarrer de l'Explorateur Windows, l'option de menu "Arrêter" dans le Gestionnaire des tâches, REBOOT /S dans TCC ou Take Command, et d’autres programmes d’application vous permettant d’arrêter le système, lancent l’arrêt en appelant directement l’un des deux appels Win32 API: InitiateSystemShutdownEx() ou ExitWindowsEx(). Ils ne font pas les choses indirectement en exécutant le shutdown programme. (Cela nécessite en fait plus de code que d'appeler l'appel de l'API Win32.) shutdown programme, quand on fait un arrêt local, appelle ces mêmes appels Win32 API.

C'est en fait winlogon, csrss, et smss ce sont les programmes qui arrêtent Windows NT. En particulier, il est winlogon cela fait le travail principal de traitement des demandes de fermeture différées.

Lectures complémentaires


31
2018-03-14 19:26



Vous êtes vraiment un répondeur avisé! 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, le shutdown la commande n'est pas du tout impliquée dans le processus d'arrêt complet; Bien qu'il puisse envoyer des messages d'avertissement ou toucher / run / nologin, tout ce qu'il fait en ce qui concerne la fermeture réelle consiste à envoyer la commande appropriée à systemd, init, etc., et à quitter. Le processus init ou son système de remplacement moderne effectue réellement le travail d’arrêt du système. - Michael Hampton
Non, M. Hampton, qui envoie les messages et arrête les ouvertures de session, fait partie intégrante de la procédure d'arrêt complète. Ne partez pas en pensant que cela a magiquement disparu avec Linux. Les pages de manuel pour deux Linux shutdowns sont juste devant vous. Penser cela est aussi faux que le non-sens dans le Introduction à Linux à TLDP qui dit que "UNIX n'est pas fait pour être arrêté". UNIX a en effet été conçu pour être fermé, et il y a pas mal de livres au cours des 40 dernières années pour les professionnels UNIX qui couvrent la procédure complète, avec des messages d'avertissement aux utilisateurs comme étape # 1. - JdeBP
Il existe même des livres pour les professionnels Linux. Je branche les Rod Smith Guide d'étude LPIC, qui a shutdown à la page 22, mais ce n'est pas dans ma bibliothèque. Désolé, M. Smith. (-: Ma bibliothèque a les goûts de Coffin Référence SVR5 (l’étape des utilisateurs avertis décrite aux pages 355 et 683), une SCO UNIX Guide de l'administrateur système (avertissements aux utilisateurs en tant que première étape d'arrêt sur les pages 52-53), et même Fielder / Hunter's Administration du système UNIX (l'intégralité du chapitre 6 concerne l'arrêt, avec des utilisateurs avertis au début du chapitre). On peut trouver beaucoup plus de livres pour les professionnels qui couvrent cela. - JdeBP


Non.

Explorer n'exige pas cette commande lorsque vous fermez le menu Démarrer.

L'arrêt du système est possible avec un appel d'API Win32 (la réponse de @ JdeBP fournit de très bons détails à ce sujet si vous êtes intéressé). La commande est juste un moyen pratique de le faire depuis un script, une tâche planifiée ou la boîte de dialogue Exécuter.


55
2018-03-14 03:50



Réellement, shutdown.exe ne fait même pas un arrêt gracieux. - kinokijuf
Attention à cette réponse! Explorer n'appelle pas cette commande, mais d'autres processus qui arrêtent ou redémarrent Windows font: et 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
Cela ne le rend pas "nécessaire", Nile. Voir le contexte de la question (qui n'est pas dans la question, mais est dans ma réponse et ce qui est indiqué là-bas) pour la réfutation que l'interrogateur était interrogateur, et la déclaration à propos de shutdown que l'auteur avait à l'origine. (Ces parties de) installeurs sont souvent écrites dans des langages compilés qui appellent simplement l'API Win32, en passant. - JdeBP


Comme l'explique ultrasawblade (upvote), l'arrêt du système est un appel de l'API Win32 à: ExitWindowsEx

Le lien a également un exemple sur la façon de mettre en œuvre un arrêt à partir de C. Vous pouvez également le faire à partir de 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


8
2018-03-14 17:41





Ce n'est pas nécessaire. shutdown.exe est juste un utilitaire pour arrêter un ordinateur local ou distant. Ça ressemble à shutdown.exe utilise le API native's NtShutdownsystem. Pendant que Windows utilise ExitWindowsEx (comme déjà mentionné).


4
2018-03-14 19:48