Versuchen Sie es etwas anderes umzubenennen und sehen Sie.
Martineau
10
@MukulKumar Jemand, der den Effekt herausfinden möchte und weiß, dass er ihn sehr leicht umkehren kann?
Jon Bentley
8
@theGreenCabbage: Sie müssen ausgeben shutdown -s -t 0- eine Ebene shutdownzeigt nur Hilfe an.
LawrenceC
9
Das Herausziehen des Netzsteckers sollte den Computer unabhängig vom Dateinamen ausschalten.
David Starkey
7
@ DavidStarkey: "Ausschalten" und "Herunterfahren" sind jedoch nicht dasselbe.
Leichtigkeit Rennen mit Monica
Antworten:
31
Ihre Frage ergibt sich natürlich aus Ihrer Antwort unter https://codegolf.stackexchange.com/a/24011/18907 , insbesondere aus kinokijufdem Kommentar von 's bei der ersten Überarbeitung Ihrer Antwort.
Wie kinokijufgesagt, Windows ist kein Unix. Auf Unices und Linux shutdownist in der Tat der vollständige Shutdown-Prozess beteiligt. Es ist das Programm, das regelmäßig Warnmeldungen an angemeldete Benutzer sendet und die /run/nologinDatei schreibt , um ein weiteres Anmelden kurz vor dem geplanten Herunterfahren zu verhindern.
Unter Windows NT ist dies nicht der Fall.
Die Aktion "Herunterfahren" über die Schaltfläche "Ein / Aus" im Windows Explorer-Startmenü, die Menüoption "Herunterfahren" im Task-Manager, REBOOT /Sin TCC oder Take Command sowie andere Anwendungsprogramme, mit denen Sie das System herunterfahren können, lösen alle das Herunterfahren aus durch direkten Aufruf eines von zwei Win32-API-Aufrufen: InitiateSystemShutdownEx()oder ExitWindowsEx(). Sie tun Dinge nicht indirekt, indem sie das shutdownProgramm ausführen. (Dies erfordert tatsächlich mehr Code als nur den Aufruf der Win32-API.) Das shutdownProgramm ruft beim lokalen Herunterfahren dieselben Win32-API-Aufrufe auf.
Es ist eigentlich winlogon, csrssund smssdas sind die Programme, die Windows NT herunterfahren. Dies ist insbesondere winlogondie Hauptaufgabe bei der Verarbeitung verzögerter Anforderungen zum Herunterfahren.
Sie sind wirklich ein vernünftiger Antworter! Mir hat gefallen, wie Sie durch mein Profil auf die reale Situation zurückgeführt haben.
Mukul Kumar
Beachten Sie, dass der shutdownBefehl auf Linux-Systemen überhaupt nicht am vollständigen Herunterfahren beteiligt ist. Während es Warnmeldungen senden oder / run / nologin berühren kann, ist alles, was es in Bezug auf das tatsächliche Herunterfahren tut, den entsprechenden Befehl an systemd, init usw. zu senden und zu beenden. Der Init-Prozess oder sein modernes Ersatzsystem erledigt tatsächlich die Arbeit des Herunterfahrens des Systems.
Michael Hampton
Nein, M. Hampton, das Senden der Nachrichten und das Beenden der Anmeldung ist ein vollwertiger Teil des vollständigen Herunterfahrens. Denken Sie nicht, dass es mit Linux auf magische Weise verschwunden ist. Die Manualseiten für zwei Linuxs shutdownliegen direkt vor Ihnen. Das ist genauso falsch wie der Unsinn in der Einführung in Linux bei TLDP, der besagt, dass "UNIX nicht zum Herunterfahren gemacht wird". UNIX sollte tatsächlich heruntergefahren werden, und es gibt in den letzten 40 Jahren eine ganze Reihe von Büchern für UNIX-Experten, in denen das gesamte Verfahren mit Warnmeldungen an die Benutzer als Schritt 1 behandelt wird.
JdeBP
Es gibt sogar Bücher für Linux-Profis. Ich würde Rod Smiths LPIC Study Guide einstecken , der shutdownauf Seite 22 zu finden ist, aber er befindet sich nicht in meiner Bibliothek. Entschuldigung, M. Smith. (-: Meine Bibliothek enthält Coffins SVR5-Referenz (der auf den Seiten 355 und 683 beschriebene Warnschritt für Benutzer), ein SCO UNIX - Systemadministratorhandbuch (Warnhinweise für Benutzer als erster Schritt zum Herunterfahren auf den Seiten 52–53) und sogar Fielder's / Jägers UNIX-Systemadministration (das gesamte Kapitel 6 befasst sich mit dem Herunterfahren, wobei die Benutzer am Anfang des Kapitels gewarnt werden.) Es gibt noch viele Bücher für Fachleute, die dies behandeln.
JdeBP
55
Nein.
Der Explorer ruft diesen Befehl nicht auf, wenn Sie ihn über das Startmenü beenden.
Das Herunterfahren des Systems ist über einen Win32-API-Aufruf möglich (die Antwort von @ JdeBP enthält bei Interesse ausführliche Informationen dazu). Der Befehl ist nur eine bequeme Möglichkeit, ihn über ein Skript, eine geplante Aufgabe oder das Dialogfeld "Ausführen" auszuführen.
Eigentlich shutdown.exemacht man noch nicht mal ein anmutiges Herunterfahren.
Kinokijuf
Vorsicht mit dieser Antwort! Der Explorer ruft diesen Befehl nicht auf, aber andere Prozesse, die Windows herunterfahren oder neu starten, tun dies. Dies ist nicht nur eine bequeme Methode, wenn das Skript oder die geplante Aufgabe ein Installationsprogramm oder eine geplante Wartungsaufgabe Ihres Systemadministrators ist.
Nigel Heffernan
1
Das macht es nicht "notwendig", Nil. Siehe den Kontext der Frage (der nicht in der Frage, sondern in meiner Antwort enthalten ist und worauf dort hingewiesen wird) für die Widerlegung, die der Fragesteller gestellt hat, und die Aussage darüber shutdown, die der Fragesteller ursprünglich gemacht hat. (Diese Teile von) Installationsprogrammen werden häufig in kompilierten Sprachen geschrieben, die übrigens nur die Win32-API aufrufen.
JdeBP
8
Wie von ultrasawblade (upvote) erklärt, handelt es sich beim Herunterfahren des Systems um einen Win32-API-Aufruf an: ExitWindowsEx
Der Link enthält auch ein Beispiel für die Implementierung eines Herunterfahrens von C. Sie können dies auch von C # aus mit P / Invoke (Platform Invoke) ausführen. pinvoke.net stellt eine Reihe von Signaturen zur Verfügung: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
shutdown -s -t 0
- eine Ebeneshutdown
zeigt nur Hilfe an.Antworten:
Ihre Frage ergibt sich natürlich aus Ihrer Antwort unter https://codegolf.stackexchange.com/a/24011/18907 , insbesondere aus
kinokijuf
dem Kommentar von 's bei der ersten Überarbeitung Ihrer Antwort.Wie
kinokijuf
gesagt, Windows ist kein Unix. Auf Unices und Linuxshutdown
ist in der Tat der vollständige Shutdown-Prozess beteiligt. Es ist das Programm, das regelmäßig Warnmeldungen an angemeldete Benutzer sendet und die/run/nologin
Datei schreibt , um ein weiteres Anmelden kurz vor dem geplanten Herunterfahren zu verhindern.Unter Windows NT ist dies nicht der Fall.
Die Aktion "Herunterfahren" über die Schaltfläche "Ein / Aus" im Windows Explorer-Startmenü, die Menüoption "Herunterfahren" im Task-Manager,
REBOOT /S
in TCC oder Take Command sowie andere Anwendungsprogramme, mit denen Sie das System herunterfahren können, lösen alle das Herunterfahren aus durch direkten Aufruf eines von zwei Win32-API-Aufrufen:InitiateSystemShutdownEx()
oderExitWindowsEx()
. Sie tun Dinge nicht indirekt, indem sie dasshutdown
Programm ausführen. (Dies erfordert tatsächlich mehr Code als nur den Aufruf der Win32-API.) Dasshutdown
Programm ruft beim lokalen Herunterfahren dieselben Win32-API-Aufrufe auf.Es ist eigentlich
winlogon
,csrss
undsmss
das sind die Programme, die Windows NT herunterfahren. Dies ist insbesonderewinlogon
die Hauptaufgabe bei der Verarbeitung verzögerter Anforderungen zum Herunterfahren.Weitere Lektüre
shutdown
. FreeBSD 9.2-Handbuchseiten . 2013-03-19.shutdown
.systemd
Handbuchseiten . 2013. Freedesktop.org.shutdown
.upstart
Handbuchseiten . 2009. Canonical Ltd.InitiateSystemShutdownEx
. MSDN. Microsoft Corporation.ExitWindowsEx
. MSDN. Microsoft Corporation.REBOOT
. Nehmen Sie die Command / TCC-Hilfe in Anspruch. JP Software.quelle
shutdown
Befehl auf Linux-Systemen überhaupt nicht am vollständigen Herunterfahren beteiligt ist. Während es Warnmeldungen senden oder / run / nologin berühren kann, ist alles, was es in Bezug auf das tatsächliche Herunterfahren tut, den entsprechenden Befehl an systemd, init usw. zu senden und zu beenden. Der Init-Prozess oder sein modernes Ersatzsystem erledigt tatsächlich die Arbeit des Herunterfahrens des Systems.shutdown
liegen direkt vor Ihnen. Das ist genauso falsch wie der Unsinn in der Einführung in Linux bei TLDP, der besagt, dass "UNIX nicht zum Herunterfahren gemacht wird". UNIX sollte tatsächlich heruntergefahren werden, und es gibt in den letzten 40 Jahren eine ganze Reihe von Büchern für UNIX-Experten, in denen das gesamte Verfahren mit Warnmeldungen an die Benutzer als Schritt 1 behandelt wird.shutdown
auf Seite 22 zu finden ist, aber er befindet sich nicht in meiner Bibliothek. Entschuldigung, M. Smith. (-: Meine Bibliothek enthält Coffins SVR5-Referenz (der auf den Seiten 355 und 683 beschriebene Warnschritt für Benutzer), ein SCO UNIX - Systemadministratorhandbuch (Warnhinweise für Benutzer als erster Schritt zum Herunterfahren auf den Seiten 52–53) und sogar Fielder's / Jägers UNIX-Systemadministration (das gesamte Kapitel 6 befasst sich mit dem Herunterfahren, wobei die Benutzer am Anfang des Kapitels gewarnt werden.) Es gibt noch viele Bücher für Fachleute, die dies behandeln.Nein.
Der Explorer ruft diesen Befehl nicht auf, wenn Sie ihn über das Startmenü beenden.
Das Herunterfahren des Systems ist über einen Win32-API-Aufruf möglich (die Antwort von @ JdeBP enthält bei Interesse ausführliche Informationen dazu). Der Befehl ist nur eine bequeme Möglichkeit, ihn über ein Skript, eine geplante Aufgabe oder das Dialogfeld "Ausführen" auszuführen.
quelle
shutdown.exe
macht man noch nicht mal ein anmutiges Herunterfahren.shutdown
, die der Fragesteller ursprünglich gemacht hat. (Diese Teile von) Installationsprogrammen werden häufig in kompilierten Sprachen geschrieben, die übrigens nur die Win32-API aufrufen.Wie von ultrasawblade (upvote) erklärt, handelt es sich beim Herunterfahren des Systems um einen Win32-API-Aufruf an: ExitWindowsEx
Der Link enthält auch ein Beispiel für die Implementierung eines Herunterfahrens von C. Sie können dies auch von C # aus mit P / Invoke (Platform Invoke) ausführen. pinvoke.net stellt eine Reihe von Signaturen zur Verfügung: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
quelle
Es ist nicht notwendig.
shutdown.exe
ist nur ein Dienstprogramm zum Herunterfahren eines lokalen oder Remote-Computers. Es sieht aus wieshutdown.exe
nutzt die native API ‚sNtShutdownsystem
. Während Windows verwendetExitWindowsEx
( wie bereits erwähnt ).quelle