关闭 Windows 是否需要 shutdown.exe ?

关闭 Windows 是否需要 shutdown.exe ?

该文件是否是C:\windows\system32\shutdown.exe关闭或重新启动 Windows 所必需的?

答案1

你的问题当然源于你的回答https://codegolf.stackexchange.com/a/24011/18907,特别是来自kinokijuf对你答案的初步修改的评论。

如上所述kinokijuf,Windows 不是 Unix。在 Unix 和 Linux 上,shutdown确实参与了完全关机过程。它是定期向登录用户发送警告消息并/run/nologin在预定关机时间前不久写入文件以防止进一步登录的程序。

在 Windows NT 上,情况并非如此。

Windows 资源管理器开始菜单上“电源按钮”上的“关机”操作、任务管理器、REBOOT /STCC 或 Take Command 中的“关机”菜单选项以及允许您关闭系统的其他应用程序都通过直接调用两个 Win32 API 调用之一来启动关机:InitiateSystemShutdownEx()ExitWindowsEx()。它们不会通过运行shutdown程序来间接执行操作。(这实际上需要比调用 Win32 API 调用更多的代码。)shutdown当程序执行本地关机时,也会调用相同的 Win32 API 调用。

winlogon实际上,是csrss、和smss是关闭 Windows NT 的程序。具体来说,是winlogon负责处理延迟关机请求的主要工作。

进一步阅读

答案2

不。

当您从“开始”菜单关闭时,Explorer 不会调用此命令。

可以使用 Win32 API 调用关闭系统(如果感兴趣的话,@JdeBP 的回答提供了有关此内容的详细信息)。该命令只是一种从脚本、计划任务或运行对话框中执行此操作的便捷方法。

答案3

正如 ultrasawblade (赞成) 所解释的,系统关闭是一个 Win32 API 调用: 退出WindowsEx

该链接还提供了有关如何从 C 实现关闭的示例。此外,您还可以使用 P/Invoke(平台调用)从 C# 执行此操作。pinvoke.net 有许多可用的签名:http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html

答案4

没有必要。shutdown.exe只是一个用于关闭本地或远程计算机的实用程序。它看起来shutdown.exe使用本机 APINative APINtShutdownsystem. 虽然 Windows 使用ExitWindowsEx正如前面提到的)。

相关内容