【发布时间】:2013-07-17 05:36:42
【问题描述】:
我希望我的应用程序可以防止 Windows 关闭。我知道有一个系统命令可以做到这一点。但不要为我的程序工作。 我使用此代码“取消”关闭窗口:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason.Equals(CloseReason.WindowsShutDown))
{
MessageBox.Show("Cancelling Windows shutdown");
string cmd = "shutdown /a";
Process.Start(cmd);// for executing system command.
}
}
也使用此代码,但不起作用:( :
public Form1()
{
InitializeComponent();
SystemEvents.SessionEnding += SessionEndingEvtHandler;
}
private void SessionEndingEvtHandler(object sender, SessionEndingEventArgs e)
{
MessageBox.Show("Cancelling Windows shutdown");
string cmd = "shutdown /a";
Process.Start(cmd);// for executing system command.
}
如果有人向我解释如何“取消”Windows 关闭,我将不胜感激。 谢谢
【问题讨论】:
-
在现代版本的 Windows 中,应用程序不允许这样做,IIRC
-
Vista 中引入的更改如下所述:msdn.microsoft.com/en-us/library/ms700677.aspx 即使应用程序阻止关闭,用户也可以覆盖并强制关闭。
-
shutdown /a仅取消关闭前的超时时间(例如,如果您已使用shutdown /t 30启动系统关闭)。一旦关闭过程本身开始,就无法停止。 -
这已经结束了,太多的程序做了你想做的事。你有几秒钟的时间来保存基本状态,你最好快点实施。
标签: c# windows command-line event-handling system