C:\windows\system32\shutdown.exe
关闭或重新启动Windows 是否需要该文件?
shutdown -s -t 0
-平原shutdown
仅显示帮助。
C:\windows\system32\shutdown.exe
关闭或重新启动Windows 是否需要该文件?
shutdown -s -t 0
-平原shutdown
仅显示帮助。
Answers:
您的问题当然来自您在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
程序间接地做事。(实际上,不仅需要调用Win32 API调用,还需要执行更多的代码。)该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
。取得命令/ TCC帮助。JP软件。shutdown
命令完全不参与完整的关闭过程。尽管它可能会发送警告消息或触摸/ run / nologin,但实际上关闭它所做的只是将适当的命令发送到systemd,init等,然后退出。初始化过程或它的现代替代系统实际上完成了关闭系统的工作。
shutdown
的手册页就在您的面前。认为这与TLDP的Linux简介中的废话一样是错误的,它说“不要关闭UNIX”。确实确实要关闭UNIX,并且在过去40年中,UNIX专业人员有很多书籍介绍了整个过程,并向用户发出了警告消息,作为第一步。
shutdown
在第22页上找到,但是它不在我的书架中。抱歉,史密斯先生。(-:我的库具有Coffin的SVR5参考(警告用户步骤在355和683页上进行了说明),SCO UNIX系统管理员指南(警告用户作为关闭的第一步在52-53页上进行警告),甚至是Fielder / Hunter的UNIX系统管理(第6章中的整个内容都是有关关机的,在本章的开头有警告用户),您可以找到很多有关此问题的专业书籍
没有。
从“开始”菜单中关闭时,资源管理器不会调用此命令。
可以通过Win32 API调用来关闭系统(@JdeBP的答案提供了有关此问题的详细信息)。该命令只是从脚本,计划任务或“运行”对话框中执行命令的便捷方式。
shutdown.exe
甚至都无法正常关机。
shutdown
提问者最初所作的陈述。(安装程序的这些部分)安装程序通常用编译后的语言编写,这些语言仅调用Win32 API。
如ultrasawblade(更新)所述,系统关闭是Win32 API调用: ExitWindowsEx
该链接还提供了有关如何从C实现关机的示例。此外,您还可以使用P / Invoke(平台调用)从C#中进行关闭。pinvoke.net有很多可用的签名:http ://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
没有必要。shutdown.exe
只是一个用于关闭本地或远程计算机的实用程序。它看起来像shutdown.exe
使用了本机API的NtShutdownsystem
。Windows使用ExitWindowsEx
(如前所述)。