该文件是否C:\windows\system32\shutdown.exe需要关闭或重新启动 Windows?
Law*_*ceC 55
不。
当您从“开始”菜单关闭时,资源管理器不会调用此命令。
可以通过 Win32 API 调用关闭系统(如果有兴趣,@JdeBP 的回答提供了有关此的详细信息)。该命令只是一种从脚本、计划任务或“运行”对话框执行此操作的便捷方式。
Jde*_*eBP 31
您的问题当然源于您在https://codegolf.stackexchange.com/a/24011/18907 上的回答,特别是来自kinokijuf对您的答案的初始修订的评论。
如前所述kinokijuf,Windows 不是 Unix。在Unices 和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主要负责处理延迟关闭请求。
shutdown. FreeBSD 9.2 手册页。2013-03-19。shutdown. systemd手册页。2013. Freedesktop.org。shutdown. upstart手册页。2009. 佳能有限公司InitiateSystemShutdownEx. 微软。微软公司。ExitWindowsEx. 微软。微软公司。REBOOT. 接受命令/TCC 帮助。JP软件。小智 8
正如ultrasawblade(upvote)所解释的那样,系统关闭是一个Win32 API调用: ExitWindowsEx
该链接还有一个关于如何从 C 实现关闭的示例。此外,您可以使用 P/Invoke(平台调用)从 C# 执行此操作。pinvoke.net 有一堆可供使用的签名:http ://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
| 归档时间: |
|
| 查看次数: |
5622 次 |
| 最近记录: |