临时阻止关机/重启(最常用)
这种方法的原理是“挂起”关机或重启请求,直到该任务被取消或完成,一旦系统重启,这个阻止就会失效。

在 Windows 系统中
使用命令提示符 (CMD) 或 PowerShell
打开 CMD 或 PowerShell(以管理员身份运行),然后输入以下命令:
shutdown /a
- 命令解释:
shutdown:是关机命令。/a:是 Abort(中止)的缩写,用于中止一个正在关机的请求。
- 适用情况:当你看到系统提示“关机”或“重启”的倒计时窗口时,此命令可以立即取消它。
- 快捷键:你也可以直接按
Win + X,然后选择“命令提示符(管理员)”或“Windows PowerShell(管理员)”。
使用任务管理器
- 按
Ctrl + Shift + Esc打开任务管理器。 - 点击“文件” -> “运行新任务”。
- 输入
cmd或powershell,并勾选“以系统管理权限创建此任务”。 - 在新打开的命令行窗口中输入
shutdown /a。
在 Linux 系统中
使用 shutdown 命令

Linux 的 shutdown 命令本身就带有取消选项。
# 取消一个已经计划的关机或重启 sudo shutdown -c
- 命令解释:
sudo shutdown -c:-c选项用于 cancel(取消)一个由shutdown命令发起的计划任务。
- 适用情况:如果你之前使用了
sudo shutdown -h now(关机)或sudo shutdown -r now(重启),可以用这个命令取消。
使用 systemd 命令 (现代 Linux 发行版,如 Ubuntu, CentOS 7+, Debian 8+)
如果你的系统使用 systemd(现在绝大多数系统都是),可以使用 systemctl 命令。
# 取消所有待机的关机或重启任务 sudo systemctl cancel
- 命令解释:
systemctl cancel会取消所有由systemd管理的挂起操作,包括计划关机。
永久性禁止关机/重启(需要管理员权限)
这种方法会修改系统策略,使得普通用户无法通过常规方式关机或重启,通常用于公共电脑、服务器或需要保持持续运行的设备。

在 Windows 系统中
使用本地组策略编辑器(仅限专业版、企业版、教育版)
- 按
Win + R,输入gpedit.msc并回车,打开组策略编辑器。 - 导航到以下路径:
计算机配置->管理模板->Windows 组件->文件资源管理器 - 在右侧窗口中,找到并双击 “关闭‘关闭’按钮”。
- 选择 “已启用”,然后点击“确定”。
- 同样地,找到并双击 “关闭‘重启’按钮”,选择 “已启用”,然后点击“确定”。
效果:开始菜单中的电源按钮会消失,锁屏界面的电源选项也会被禁用。
使用注册表编辑器(适用于所有 Windows 版本)
- 按
Win + R,输入regedit并回车,打开注册表编辑器。 - 导航到以下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer - 在右侧窗口中,右键点击空白处,选择
新建->DWORD (32 位) 值。 - 将新建的值命名为
ShutdownWithoutLogon。 - 双击
ShutdownWithoutLogon,将其数值数据修改为0,然后点击“确定。
效果:登录界面和锁屏界面的关机和重启选项会被隐藏。
修改计划任务(阻止自动重启)
某些程序(如 Windows Update)会通过计划任务自动重启,可以禁用这些任务。
- 打开 任务计划程序(在开始菜单搜索)。
- 导航到
Microsoft->Windows->UpdateOrchestrator。 - 找到名称类似
Reboot的任务,右键点击并选择 “禁用”。
在 Linux 系统中
修改 Polkit 策略(适用于使用 GNOME/KDE/XFCE 等桌面环境的系统)
Polkit 是一个用于控制系统权限的框架,我们可以通过修改它的策略文件来禁止普通用户关机。
-
创建或编辑策略文件:
sudo nano /etc/polkit-1/localauthority/50-local.d/90-noshutdown.pkla
(使用
nano,vim或你喜欢的任何文本编辑器) -
在文件中添加以下内容:
[Disable shutdown and reboot for non-admin users] Identity=unix-user:*;!unix-group:admin Action=org.freedesktop.login1.power-off;org.freedesktop.login1.reboot ResultAny=no ResultInactive=no ResultActive=no
-
解释:
Identity=unix-user:*;!unix-group:admin:这个规则针对所有用户(),但排除了admin组的用户,你可以根据需要修改,unix-user:your_username来只针对特定用户。Action=...:指定要控制的行为,这里是关机和重启。Result=no:对所有匹配的用户都拒绝该操作。
-
保存文件后,重启 Polkit 服务或重启系统使配置生效:
sudo systemctl restart polkit
修改 sudoers 文件(高级方法)
如果你只想禁止某个特定用户通过 sudo 关机或重启,可以编辑 /etc/sudoers 文件。
-
使用
visudo命令安全地编辑文件:sudo visudo
-
在文件末尾添加以下内容(假设要禁止用户
john):john ALL=(ALL) ALL, !/sbin/shutdown, !/sbin/reboot, !/usr/bin/systemctl poweroff, !/usr/bin/systemctl reboot这行会给
john除了shutdown,reboot,systemctl poweroff,systemctl reboot之外的所有sudo权限。
远程阻止关机/重启
如果你需要阻止网络上另一台计算机的关机操作,可以使用远程命令。
在 Windows 中
-
在目标计算机上,确保远程连接(如远程桌面)是开启的。
-
在本地计算机上,打开命令提示符或 PowerShell。
-
使用
shutdown命令加上目标计算机的名称或 IP 地址:# 阻止远程计算机名为 "PC-NAME" 的关机请求 shutdown /a /m \\PC-NAME
在 Linux 中
-
在目标计算机上,确保 SSH 服务正在运行。
-
在本地计算机上,打开终端。
-
通过 SSH 登录到目标计算机,然后执行取消命令:
# 登录到目标服务器 ssh username@target_server_ip # 登录后,执行取消命令 sudo shutdown -c # 或者 sudo systemctl cancel
| 场景 | Windows | Linux |
|---|---|---|
| 临时阻止 | shutdown /a (在CMD/PS中) |
sudo shutdown -c 或 sudo systemctl cancel |
| 永久禁止 | 组策略 (gpedit.msc) 或 注册表 (regedit) |
修改 Polkit 策略文件 (/etc/polkit-1/...) |
| 远程阻止 | shutdown /a /m \\COMPUTER_NAME |
ssh user@host sudo shutdown -c |
请根据您的具体需求选择合适的方法,对于临时性需求,使用场景一的方法最简单直接,对于需要长期管理的设备,场景二的方法更合适。
