以编程方式即时关机?

时间:2013-03-26 11:34:58

标签: acpi

在网络环境中的Windows XP专业版中,Ctrl + Alt + Del为您提供Windows安全提示,如果按住Ctrl键并单击关机,则会触发紧急关机。

这似乎关闭系统的速度太快,甚至不能完成进程,即几乎就像拔出电源/长按电源按钮一样。

我想知道Windows实现如此快速关机的过程 - 它是否直接通过ACPI / APM指示BIOS关闭系统电源?如果是这样,如何以任何语言以编程方式实现?

3 个答案:

答案 0 :(得分:1)

这可以通过使用系统请求功能在* nix系统上完成。通常,出于安全原因禁用此选项,但您可以使用root权限启用它,并立即请求关闭系统电源,如下所示:

echo 1 > /proc/sys/kernel/sysrq-trigger ;
echo o > /proc/sysrq-trigger

字母'o'表示“断电”。其他功能可用。 https://en.wikipedia.org/wiki/Magic_SysRq_key

答案 1 :(得分:1)

ExitWindowsEx函数是标准关闭,即使使用EWX_FORCE它仍会关闭所有程序,服务等......它只是不会询问 /等待它们关闭。

那么解决方案是什么? 使用NtShutdownSystem

该函数通过刷新缓存,注册表等然后调用BIOS关闭计算机来执行实际关闭。

在此查看用法示例:
http://www.codeproject.com/Articles/34194/Performing-emergency-shutdowns

答案 2 :(得分:0)

您可以在设置EWX_POWEROFFEWX_FORCE标志的情况下使用ExitWindowsEx ...

相关问题