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

特定程序终止时能否将Windows PC设置为待机并配置重启缓冲超时?

需求实现说明

这个需求完全可以实现,仅用Windows自带工具即可完成,无需安装第三方软件,具体方案如下:

方案1:事件触发式(响应最快,资源占用低)

前置配置:开启进程退出审核

要准确监听指定程序的终止事件,需要先开启系统进程跟踪审核:

  • 按下Win+R输入gpedit.msc回车打开组策略编辑器
  • 依次进入计算机配置 > Windows 设置 > 安全设置 > 本地策略 > 审核策略
  • 双击「审核进程跟踪」,勾选「成功」选项,确定后重启电脑生效

步骤1:编写带超时缓冲的待机脚本

新建文本文件,修改后缀为.ps1,写入以下内容:

# 替换为你要监控的进程名,可在任务管理器右键进程→属性中查看
$targetProcess = "notepad"
# 自定义缓冲时间,单位为秒,示例为300秒即5分钟
$waitSeconds = 300

# 倒计时检测程序是否重启
$countdownEnd = (Get-Date).AddSeconds($waitSeconds)
while ((Get-Date) -lt $countdownEnd) {
    $running = Get-Process -Name $targetProcess -ErrorAction SilentlyContinue
    if ($running) {
        # 检测到程序已重启,直接终止脚本,不触发待机
        exit 0
    }
    Start-Sleep -Seconds 10
}

# 超时未检测到程序重启,执行待机
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $false)

把脚本保存到固定目录,比如C:\Scripts\auto_standby.ps1。

步骤2:配置任务计划程序关联事件

  • 按下Win+R输入taskschd.msc回车打开任务计划程序,点击右侧「创建任务」
  • 「常规」选项卡:自定义任务名称,勾选使用最高权限运行
  • 「触发器」选项卡:点击「新建」,开始任务选择「发生事件时」,日志选择「安全」,事件ID填写4689,点击确定
  • 「操作」选项卡:点击「新建」,操作选择「启动程序」,程序或脚本填写powershell.exe,添加参数填写-ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\Scripts\auto_standby.ps1"(替换为你实际的脚本路径)
  • 按需调整「条件」「设置」选项卡配置,比如可以取消交流电源限制,保存任务即可

方案2:后台轮询式(配置更简单,无需改组策略)

如果不想修改系统组策略,也可以用脚本后台循环监控的方式实现,把以下脚本设置为开机自启动即可:

$targetProcess = "notepad"
$waitSeconds = 300

while ($true) {
    $running = Get-Process -Name $targetProcess -ErrorAction SilentlyContinue
    if (-not $running) {
        # 检测到程序退出,进入倒计时
        $countdownEnd = (Get-Date).AddSeconds($waitSeconds)
        $restarted = $false
        while ((Get-Date) -lt $countdownEnd) {
            $checkRunning = Get-Process -Name $targetProcess -ErrorAction SilentlyContinue
            if ($checkRunning) {
                $restarted = $true
                break
            }
            Start-Sleep -Seconds 10
        }
        if (-not $restarted) {
            Add-Type -AssemblyName System.Windows.Forms
            [System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $false)
        }
    }
    Start-Sleep -Seconds 5
}

注意事项

  • 进程名不要加.exe后缀,和任务管理器中显示的进程名保持一致即可
  • 如果需要休眠代替待机,把脚本中SetSuspendState的第一个参数改为"Hibernate"即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:45:07