36 votes

Le fichier shutdown.exe est-il nécessaire pour arrêter Windows ?

Est-ce que le fichier C:\windows\system32\shutdown.exe nécessaire d'arrêter ou de redémarrer Windows ?

55voto

LawrenceC Points 70381

No.

Explorer n'appelle pas cette commande lorsque vous vous fermez à partir du menu Démarrer.

L'arrêt du système est possible avec un appel d'API Win32 (la réponse de @JdeBP fournit de grands 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.

31voto

JdeBP Points 25711

Votre question découle bien sûr de votre réponse à l'adresse suivante https://codegolf.stackexchange.com/a/24011/18907 notamment de kinokijuf Le commentaire de l'auteur sur la révision initiale de votre réponse.

Comme kinokijuf dit, Windows n'est pas Unix. Sur Unices et Linux, shutdown est en effet impliqué dans le processus d'arrêt complet. Il s'agit du programme qui envoie régulièrement des messages d'avertissement aux utilisateurs connectés et qui écrit le message d'avertissement de l'utilisateur. /run/nologin pour empêcher toute nouvelle connexion un peu 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 de démarrage 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 qui vous permettent d'arrêter le système déclenchent tous l'arrêt en appelant directement l'un des deux appels API Win32 : InitiateSystemShutdownEx() o ExitWindowsEx() . Ils ne font pas les choses de manière indirecte en faisant fonctionner la shutdown programme. (Cela nécessite en fait plus de code que le simple appel à l'API Win32). shutdown lorsque l'on procède à un arrêt local, fait également appel à ces mêmes appels API Win32.

En fait, c'est winlogon , csrss et smss qui sont les programmes qui arrêtent Windows NT. En particulier, il s'agit winlogon qui effectue le travail principal de traitement des demandes d'arrêt différé.

Autres lectures

8voto

Luke Antins Points 1317

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

Le lien contient également un exemple de mise en œuvre d'un arrêt en C. Vous pouvez également le faire en C# à l'aide de P/Invoke (Platform Invoke). pinvoke.net propose un grand nombre de signatures à utiliser : http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html

4voto

stderr Points 10006

Ce n'est pas nécessaire. shutdown.exe est simplement un utilitaire permettant d'arrêter un ordinateur local ou distant. Il se présente comme suit shutdown.exe utilise le API native 's NtShutdownsystem . Alors que Windows utilise ExitWindowsEx ( comme déjà mentionné ).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X