如何保持 RDP 会话活跃?

如何保持 RDP 会话活跃?

如何保持 RDP 会话活跃?

是的,我知道这个问题以前有人问过但是,我读过和尝试过的所有解决方案在域级设置受到严格控制,甚至机器级组策略也被部分锁定的锁定环境中都不起作用。

以下是我的具体情况。我的工作站是 Windows 10,我经常通过 VPN 通过 RDP 连接到 20 英里外的另一台 Windows 10 机器。此 RDP 会话会在很短的无活动时间内自动关闭,大概 30 分钟左右。我无法更改该持续时间,我没有权限,我的 IT 人员也不会更改它。

这是我在 30 分钟内没有通过 RDP 在远程 PC 内主动执行任何操作后,被当权者强制关闭时收到的消息:

您的远程桌面服务会话已结束,因为远程计算机未收到您的任何输入。

在此处输入图片描述

我尝试了以下操作,但没有成功:

我只是想让我的 RD 会话保持活动状态,直到我故意断开它。一定有某种方法、某种黑客手段、某种工具,某物这确实有效。

请帮忙。提前致谢。

Local machine: Win10 Pro 1809
Remote machine (physical hardware, not VM): Win10 Enterprise 1909

答案1

以下脚本使用免费的 自动热键

该脚本每 10 分钟(600000 毫秒)检查一次计算机是否处于非活动状态。然后,它会按标题搜索所有远程桌面窗口,并将每个 RDP 窗口设置为活动窗口并发送按键Enter输入。

SetTitleMatchMode, 2
Loop
{
    if A_TimeIdle >= 600000
    {
        WinGet, id, List, Remote Desktop Connection
        Loop, %id%
        {
            this_id := id%A_Index%
            WinGetTitle, this_title, ahk_id %this_id%
            TrayTip, Found RDP session, %this_title%, 2, 17
            ControlSend , , {Enter}, ahk_id %this_id%
        }
    }
    Sleep, 600000
}
return

此脚本已在 Windows 10 计算机上通过 RDP 连接到 Windows 10 VM 进行测试。由于某些未知原因,AutoHotkey 无法重新最小化 RDP 窗口并重新激活之前活动的窗口,因此 RDP 保持活动状态。

安装 AutoHotKey 后,将上述文本放入一个.ahk文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中 C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

答案2

您可以轻松使会话保持活动状态:

Alive.js脚本:

var WshShell = WScript.CreateObject("WScript.Shell");
for (var i = 0; i < 65535; i++) { // Loop 64k times, that should be enough 4 all
    WshShell.SendKeys('{SCROLLLOCK}');
    WshShell.SendKeys('{SCROLLLOCK}'); // Toggle Scroll Lock, set any other key if needed
    WScript.Sleep(300000); // Wait 5 minutes or whatever time you want (in ms)
}

Active.bat文件运行脚本:

@color A
@echo Refresh Active.
@Cscript.exe Alive.js
@timeout 1

启动.bat就完成了。

答案3

让我恼火的是,远程桌面会话几分钟后就会根据公司设定的政策锁定屏幕。我在以下网址找到了意想不到的解决方案:此评论。它是您在远程机器上运行的简单 AutoHotkey 脚本。

#SingleInstance, force
#Persistent
;in milliseconds - so 30000 would be every 30 seconds
SetTimer, NoSleep, 240000
Return

NoSleep:
 DllCall( "SetThreadExecutionState", UInt,0x80000003 )
Return

答案4

它应该是:

计算机配置/管理模板/Windows 组件/远程桌面服务/远程桌面会话主机/会话时间限制

但这不是默认配置的,这意味着有人配置了它,也就是说,如果他们发现你正在规避这个政策,他们可能会不喜欢它

相关内容