菜鸟科技网

如何禁止电脑执行关机命令?

临时阻止关机/重启(最常用)

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

如何禁止电脑执行关机命令?-图1
(图片来源网络,侵删)

在 Windows 系统中

使用命令提示符 (CMD) 或 PowerShell

打开 CMDPowerShell(以管理员身份运行),然后输入以下命令:

shutdown /a
  • 命令解释
    • shutdown:是关机命令。
    • /a:是 Abort(中止)的缩写,用于中止一个正在关机的请求。
  • 适用情况:当你看到系统提示“关机”或“重启”的倒计时窗口时,此命令可以立即取消它。
  • 快捷键:你也可以直接按 Win + X,然后选择“命令提示符(管理员)”或“Windows PowerShell(管理员)”。

使用任务管理器

  1. Ctrl + Shift + Esc 打开任务管理器。
  2. 点击“文件” -> “运行新任务”。
  3. 输入 cmdpowershell,并勾选“以系统管理权限创建此任务”。
  4. 在新打开的命令行窗口中输入 shutdown /a

在 Linux 系统中

使用 shutdown 命令

如何禁止电脑执行关机命令?-图2
(图片来源网络,侵删)

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 管理的挂起操作,包括计划关机。

永久性禁止关机/重启(需要管理员权限)

这种方法会修改系统策略,使得普通用户无法通过常规方式关机或重启,通常用于公共电脑、服务器或需要保持持续运行的设备。

如何禁止电脑执行关机命令?-图3
(图片来源网络,侵删)

在 Windows 系统中

使用本地组策略编辑器(仅限专业版、企业版、教育版)

  1. Win + R,输入 gpedit.msc 并回车,打开组策略编辑器。
  2. 导航到以下路径: 计算机配置 -> 管理模板 -> Windows 组件 -> 文件资源管理器
  3. 在右侧窗口中,找到并双击 “关闭‘关闭’按钮”
  4. 选择 “已启用”,然后点击“确定”。
  5. 同样地,找到并双击 “关闭‘重启’按钮”,选择 “已启用”,然后点击“确定”。

效果:开始菜单中的电源按钮会消失,锁屏界面的电源选项也会被禁用。

使用注册表编辑器(适用于所有 Windows 版本)

  1. Win + R,输入 regedit 并回车,打开注册表编辑器。
  2. 导航到以下路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer
  3. 在右侧窗口中,右键点击空白处,选择 新建 -> DWORD (32 位) 值
  4. 将新建的值命名为 ShutdownWithoutLogon
  5. 双击 ShutdownWithoutLogon,将其数值数据修改为 0,然后点击“确定。

效果:登录界面和锁屏界面的关机和重启选项会被隐藏。

修改计划任务(阻止自动重启)

某些程序(如 Windows Update)会通过计划任务自动重启,可以禁用这些任务。

  1. 打开 任务计划程序(在开始菜单搜索)。
  2. 导航到 Microsoft -> Windows -> UpdateOrchestrator
  3. 找到名称类似 Reboot 的任务,右键点击并选择 “禁用”

在 Linux 系统中

修改 Polkit 策略(适用于使用 GNOME/KDE/XFCE 等桌面环境的系统)

Polkit 是一个用于控制系统权限的框架,我们可以通过修改它的策略文件来禁止普通用户关机。

  1. 创建或编辑策略文件:

    sudo nano /etc/polkit-1/localauthority/50-local.d/90-noshutdown.pkla

    (使用 nano, vim 或你喜欢的任何文本编辑器)

  2. 在文件中添加以下内容:

    [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
  3. 解释

    • Identity=unix-user:*;!unix-group:admin:这个规则针对所有用户(),但排除了 admin 组的用户,你可以根据需要修改,unix-user:your_username 来只针对特定用户。
    • Action=...:指定要控制的行为,这里是关机和重启。
    • Result=no:对所有匹配的用户都拒绝该操作。
  4. 保存文件后,重启 Polkit 服务或重启系统使配置生效:

    sudo systemctl restart polkit

修改 sudoers 文件(高级方法)

如果你只想禁止某个特定用户通过 sudo 关机或重启,可以编辑 /etc/sudoers 文件。

  1. 使用 visudo 命令安全地编辑文件:

    sudo visudo
  2. 在文件末尾添加以下内容(假设要禁止用户 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 中

  1. 目标计算机上,确保远程连接(如远程桌面)是开启的。

  2. 本地计算机上,打开命令提示符或 PowerShell。

  3. 使用 shutdown 命令加上目标计算机的名称或 IP 地址:

    # 阻止远程计算机名为 "PC-NAME" 的关机请求
    shutdown /a /m \\PC-NAME

在 Linux 中

  1. 目标计算机上,确保 SSH 服务正在运行。

  2. 本地计算机上,打开终端。

  3. 通过 SSH 登录到目标计算机,然后执行取消命令:

    # 登录到目标服务器
    ssh username@target_server_ip
    # 登录后,执行取消命令
    sudo shutdown -c
    # 或者
    sudo systemctl cancel
场景 Windows Linux
临时阻止 shutdown /a (在CMD/PS中) sudo shutdown -csudo systemctl cancel
永久禁止 组策略 (gpedit.msc) 或 注册表 (regedit) 修改 Polkit 策略文件 (/etc/polkit-1/...)
远程阻止 shutdown /a /m \\COMPUTER_NAME ssh user@host sudo shutdown -c

请根据您的具体需求选择合适的方法,对于临时性需求,使用场景一的方法最简单直接,对于需要长期管理的设备,场景二的方法更合适。

分享:
扫描分享到社交APP
上一篇
下一篇