Нужен ли файл C:\windows\system32\shutdown.exeдля выключения или перезапуска Windows?
shutdown -s -t 0- на обычном языке shutdownотображается только справка.
Нужен ли файл C:\windows\system32\shutdown.exeдля выключения или перезапуска Windows?
shutdown -s -t 0- на обычном языке shutdownотображается только справка.
Ответы:
Ваш вопрос, конечно же, исходит из вашего ответа на https://codegolf.stackexchange.com/a/24011/18907 , в частности, из kinokijufкомментариев, сделанных при первоначальной редакции вашего ответа.
Как kinokijufсказано, Windows не является Unix. На Unices и Linux shutdownдействительно участвует в процессе полного выключения. Это программа, которая отправляет регулярные предупреждающие сообщения зарегистрированным пользователям и записывает /run/nologinфайл, чтобы предотвратить дальнейший вход в систему незадолго до запланированного времени завершения работы.
В Windows NT это не так.
Действие «Завершение работы» над «кнопкой питания» в меню «Пуск» проводника Windows, пункт меню «Завершение работы» в диспетчере задач, REBOOT /Sв TCC или «Взять команду», а также в других прикладных программах, которые позволяют выключить систему, все инициируют завершение работы. путем прямого вызова одного из двух вызовов Win32 API: InitiateSystemShutdownEx()или ExitWindowsEx(). Они не делают вещи косвенно, запустив shutdownпрограмму. (На самом деле для этого требуется больше кода, чем просто вызов API Win32.) shutdownПрограмма, когда выполняется локальное завершение, также вызывает те же вызовы Win32 API.
Это на самом деле winlogon, csrssи smssэто программы, которые закрывают Windows NT. В частности, именно он winlogonвыполняет основную работу по обработке отложенных запросов на отключение.
shutdown, Руководства по FreeBSD 9.2 . 2013-03-19.shutdown, systemdсправочные страницы . 2013. Freedesktop.org.shutdown, upstartсправочные страницы . 2009. Canonical Ltd.InitiateSystemShutdownEx, MSDN. Корпорация Майкрософт.ExitWindowsEx, MSDN. Корпорация Майкрософт.REBOOT, Возьмите Command / TCC Help. JP Software.shutdownкоманда вообще не участвует в процессе полного выключения; в то время как он может отправлять предупреждающие сообщения или касаться / запускать / nologin, все, что он делает в отношении фактического выключения, - это отправляет соответствующую команду systemd, init и т. д. и завершает работу. Процесс init или его современная замена systemd фактически выполняет работу по выключению системы.
shutdownнаходятся прямо перед вами. Думать, что это так же неправильно, как бессмыслица во введении к Linux в TLDP, где говорится, что «UNIX не предназначен для выключения». UNIX действительно был сделан для закрытия, и за последние 40 лет было довольно много книг для профессионалов UNIX, которые охватывают всю процедуру, с предупреждениями для пользователей как шаг # 1.
shutdownна странице 22, но его нет в моей библиотеке. Извините, М. Смит. (-: Моя библиотека имеет такие же характеристики, как Coffin SVR5 Reference (шаг предупреждений пользователей, описанный на страницах 355 и 683), Руководство системного администратора SCO UNIX (предупреждения пользователям как первый шаг завершения работы на страницах 52–53) и даже Fielder's / Администрирование системы Hunter UNIX (вся глава 6 посвящена отключению, с предупреждением пользователей в начале главы). Можно найти еще много книг для профессионалов, посвященных этой
Нет.
Explorer не вызывает эту команду, когда вы закрываете меню «Пуск».
Завершение работы системы возможно с помощью вызова Win32 API (ответ @ JdeBP содержит подробную информацию об этом, если интересно). Команда - это просто удобный способ сделать это из сценария, запланированного задания или диалога «Выполнить».
shutdown.exeдаже не делает изящное отключение.
shutdownэтом, сделанного спрашивающим первоначально. (Эти части) установщиков часто пишутся на скомпилированных языках, которые, кстати, просто вызывают Win32 API.
Как пояснил ultrasawblade (upvote), выключение системы - это вызов Win32 API для: ExitWindowsEx
В ссылке также есть пример того, как осуществить отключение из C. Кроме того, вы можете сделать это из C # с помощью P / Invoke (Platform Invoke). У pinvoke.net есть набор подписей, доступных для использования: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
Это не обязательно. shutdown.exeэто просто утилита для выключения локального или удаленного компьютера. Похоже , shutdown.exeИСПОЛЬЗУЕТ Native API «S NtShutdownsystem. Пока Windows использует ExitWindowsEx( как уже упоминалось ).