You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#取消Windows关机?调用shutdown /a命令无效问题

阻止Windows关机的正确实现方式

你的代码问题在于调用shutdown /a的时机太晚——当FormClosing事件触发时,系统关机流程已经启动,外部命令很难中断这个过程。正确的做法是直接利用FormClosingEventArgs的Cancel属性来取消窗体关闭,进而阻止系统关机。

修改后的代码如下:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.WindowsShutDown)
    {
        MessageBox.Show("正在取消Windows关机");
        // 直接取消关闭操作,阻止系统关机
        e.Cancel = true;
    }
}

补充说明

  • 这种方式是.NET框架提供的原生阻止关机机制,比调用外部命令更可靠、及时。
  • 确保程序以管理员身份运行,避免因权限不足导致操作失效。
  • 若需要在阻止关机后执行额外操作(如保存数据),可在设置e.Cancel = true后添加对应逻辑。

内容的提问来源于stack exchange,提问作者papi_2sa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:05:02