2013-03-26 60 views
2

在网络环境下的Windows XP Pro下,Ctrl + Alt + Del为您提供Windows安全提示,如果您按住Ctrl并单击关机,则会触发紧急关机。以编程方式关闭即时电源?

这似乎关闭系统的速度如此之快,它甚至不会完成流程,即几乎就像您刚刚拔掉电源/长按电源按钮一样。

我在想什么过程Windows实现了这样的快速关机 - 是直接通过ACPI/APM指示BIOS来关闭系统电源?如果是这样,那么如何以任何语言的编程方式来实现呢?

回答

1

这可以在* nix系统通过使用系统功能的要求来完成。一般来说,这是出于安全考虑禁用的,但可以立即如下用root权限启用它,并要求电源切断系统:

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

其中字母“O”的意思是“关机”。其他功能可用。 https://en.wikipedia.org/wiki/Magic_SysRq_key

0

可以使用ExitWindowsEx设置EWX_POWEROFFEWX_FORCE标志...

+0

感谢叶海亚,你会知道,一般在Unix或其他操作系统实现它? – deed02392 2013-03-26 11:55:56

+0

@ deed02392依赖于你使用的Unix和你的进程正在运行的权限...... – Yahia 2013-03-26 11:56:59

+0

我对这方面的支持主要在FreeBSD和Debian(Xen/OpenVZ)中感兴趣。我希望能够通过通用术语解释如何实现,以便我可以为特定操作系统自己进一步阅读。 – deed02392 2013-03-26 11:59:35

1

ExitWindowsEx功能是标准的关机,甚至与EWX_FORCE它仍然关闭所有程序,服务等等......它只是不 /等待他们关闭。

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

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

看看这里的一个使用示例:
http://www.codeproject.com/Articles/34194/Performing-emergency-shutdowns

相关问题