You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在RDP客户端连接时阻止本地Windows PC进入睡眠及关闭显示器?

如何在RDP客户端连接时阻止本地Windows PC进入睡眠及关闭显示器?

嘿,这个需求确实挺实用的——毕竟谁也不想正在远程操作主机跑任务呢,本地客户端先睡过去断了连接。Windows默认确实没给RDP客户端内置这个“阻止休眠”的功能,但咱们有几个原生的办法可以实现,完全不用那些鼠标抖动工具,一起来看看:

方法1:修改注册表让RDP客户端自动阻止系统休眠

Windows里有个机制,进程可以通过特定标记告诉系统“我正在忙,别休眠”,咱们可以通过注册表让mstsc.exe(RDP客户端进程)默认启用这个功能:

  • 按下Win + R,输入regedit打开注册表编辑器
  • 导航到路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile
  • 右键点击SystemProfile,选择“新建”→“项”,命名为Tasks(如果已经存在就跳过这步)
  • 进入Tasks项,右键新建→项,命名为RemoteDesktop
  • RemoteDesktop项里,右键新建→“DWORD(32位)值”,命名为NoSleep,双击设置数值数据为1,基数选十进制
  • 再新建一个DWORD值,命名为Priority,设置数值数据为1
  • 重启电脑生效

这样设置后,只要你打开了RDP客户端(不管是不是全屏),系统就会像识别媒体播放一样,阻止进入睡眠和关闭显示器。如果想要区分“全屏时阻止显示器关闭,非全屏只阻止睡眠”,这个方法可能做不到那么细,但胜在原生稳定。

方法2:用自定义电源计划+自动切换脚本

如果想要更精细的控制(比如全屏时用一个电源计划,非全屏时用另一个),可以试试这个组合:

  1. 先创建两个自定义电源计划:
    • 一个是“远程工作模式”:设置从不关闭显示器,从不进入睡眠
    • 另一个是“日常模式”:保持你原来的3分钟关显示器、10分钟睡眠的设置
    • 还可以额外建一个“远程后台模式”:设置从不睡眠,但保持3分钟关闭显示器,用于非全屏的RDP场景
  2. 写一个简单的PowerShell脚本,用来检测RDP客户端的状态并自动切换电源计划:
    # 先手动运行powercfg /list获取对应计划的GUID,替换下面的内容
    $normalPlan = "你的日常模式GUID"
    $remoteFullPlan = "你的远程工作模式GUID"
    $remoteBgPlan = "你的远程后台模式GUID"
    
    # 检测mstsc窗口是否存在
    $rdpProcess = Get-Process mstsc -ErrorAction SilentlyContinue
    if ($rdpProcess) {
        # 判断是否处于全屏状态
        $isFullScreen = (Get-ItemProperty "HKCU:\Control Panel\Desktop").FullScreen
        if ($isFullScreen -eq "1") {
            powercfg /setactive $remoteFullPlan
        } else {
            powercfg /setactive $remoteBgPlan
        }
    } else {
        powercfg /setactive $normalPlan
    }
    
  3. 把这个脚本设置成定时任务,比如每1分钟运行一次,就能自动根据RDP状态切换电源计划了。这个方法稍微麻烦一点,但能完全实现你要的“全屏阻止显示器+睡眠,非全屏只阻止睡眠”的精细控制。

方法3:临时调整无人值守睡眠超时(快速应急)

还有个快速的临时办法:打开“电源选项”→“更改计划设置”→“更改高级电源设置”,找到“睡眠”→“无人值守时的睡眠超时”,把这个值设得比你的RDP任务时间长(比如设成60分钟)。不过这个方法是全局的,不管有没有RDP连接,无人值守时都会按这个时间休眠,不如前两个方法精准,但胜在操作简单。

总的来说,方法1是最省心的原生方案,基本能满足你的核心需求;如果要更精细的控制,就选方法2。

备注:内容来源于stack exchange,提问作者Simbiat

火山引擎 最新活动