15

我正在运行 24/7 模拟击键和鼠标点击的自动化测试程序。

尽管它在本地运行良好,但在 RDP 会话中,一旦最小化或断开连接,它就会停止运行。显然,如果您无法在屏幕上实际看到它,则 GUI 不存在。

有一个注册表解决方法可以保持 GUI 处于活动状态以最小化窗口,但我不知道在断开连接后没有办法让它保持活动状态。

理想情况下,我会在服务器 Windows 控制台会话上运行它,它不会关心断开连接,但在托管环境中(我尝试过 Amazon 和 Go Daddy),无法访问控制台会话。

有谁知道我该如何解决这个问题?基本上任何允许我在 VPS 上运行我的应用程序的解决方案。我需要主机的可靠性,但也需要像坐在前面一样灵活地运行它。

4

5 回答 5

25

是的你可以。

Windows 中有两种类型的会话:始终处于活动状态的“控制台”会话,最多只能有一个会话,以及“终端”会话,例如 RDP。在 Github 上使用“rdpwrap”,您可以拥有无​​限数量的终端会话。

当没有与它们的连接时,RDP 会话将变为“停用”。程序仍然可以运行,但是任何依赖于 GUI 交互的东西都会严重损坏。

幸运的是,我们可以通过在终端会话中运行以下命令,将终端会话“转换”为控制台会话,而不是正常断开与远程桌面的连接:

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (tscon.exe %%s /dest:console)

这将使您与会话断开连接,但它仍将在完整的图形上下文中运行。这回答了你的问题。你可以重新连接它,它会再次成为一个终端会话,你可以无限地这样做。而且,当然,自动热键可以完美运行。

但是,如果您需要多个持久的、支持图形的会话怎么办?

要获得无限数量的图形持久会话,您可以运行远程桌面并从上述“主”会话中启动终端会话。通常远程桌面会阻止这种“回送”行为,但如果您为目标指定“127.0.0.2”,您将能够与远程计算机上的任意数量的用户启动终端会话。

除非您在以下注册表位置创建RemoteDesktop_SuppressWhenMinimized并将其设置为2,否则图形持久性仅在终端服务器未最小化时才会出现:

HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client

有了这个,您可以从一台机器上获得无限数量的完全独立的图形持久远程会话。

于 2018-07-14T08:27:36.057 回答
6

这可能是一种解决方法,尽管我自己没有尝试过,而且它涉及拥有另一台机器

假设您正在创建一个到 myserver.com 的会话

本地客户端----> myserver.com

您可以尝试使用单独的服务器(我们称之为 myslave.com)并使用它来建立会话,而不是这样做

本地客户端----> myslave.com ----> myserver.com

然后,如果您断开Local Client ---> myslave.com会话,则会话之间的 GUImyslave.com ----> myserver.com应保持活动状态。

只有当您连接到 myslave.com 的控制台会话时,它才会起作用。

于 2013-04-11T17:12:24.513 回答
2

我找到了类似的方法。我有同样的问题,我下载了rdp 包装器,它允许您配置多个会话 rpd 服务器,其中包含的一个工具(rdpchecker.exe)允许您连接到本地主机,这样您就可以从服务器连接到您的服务器,而您不需要那个中间客户端.

于 2016-07-03T10:20:04.390 回答
1

这可能是一种解决方法,尽管我自己没有尝试过,而且它涉及拥有>另一台机器

假设您正在创建一个到 myserver.com 的会话

本地客户端----> myserver.com

您可以尝试使用单独的服务器(我们称之为 myslave.com)并使用它来建立会话,而不是这样做

本地客户端----> myslave.com ----> myserver.com

然后,如果您断开本地客户端 ---> myslave.com 会话,myslave.com ----> myserver.com 之间会话的 GUI
应该保持活动状态

如果您使用的是 Windows 服务器,您甚至不需要另一台机器。

1) Connect to the server with the remote desktop connection (#con1).

2) Create a new alias for your server system like "127.0.0.2" in Windows\System32\drivers\etc\hosts .

3) Now establish a new remote desktop connection from your windows server (in #con1) to itself (#con2).

4) Finally start your GUI needing application e.g. UI-Path in #con2 and then close #con1.
于 2019-11-25T12:19:54.477 回答
0

我遇到了同样的问题,并注意到使用 VNC (TightVNC) 接管远程机器似乎可以解决问题。我猜VNC使用控制台屏幕。一旦激活并登录,它就会保持登录状态,即使在 VNC 断开连接后也是如此。确保屏幕永远不会在电源选项中关闭。请注意,通常不建议在 VPS 上保持控制台登录状态。

于 2022-01-03T10:49:23.257 回答