Est-ce que le fichier C:\windows\system32\shutdown.exe
nécessaire d'arrêter ou de redémarrer Windows ?
Réponses
Trop de publicités?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.
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
- Jonathan de Boyne Pollard (2006). Le processus d'arrêt de Windows NT 6 . Réponses fréquemment données.
-
shutdown
. Pages de manuel de FreeBSD 9.2 . 2013-03-19. -
shutdown
.systemd
pages de manuel . 2013. Freedesktop.org. -
shutdown
.upstart
pages de manuel . 2009. Canonical Ltd. -
InitiateSystemShutdownEx
. MSDN. Société Microsoft. -
ExitWindowsEx
. MSDN. Société Microsoft. -
REBOOT
. Aide de Take Command / TCC. Logiciel JP.
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
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é ).