使用“SupressWhenMinimzed”安全关闭 RDP 会话后,远程计算机的屏幕分辨率发生变化

Posted

技术标签:

【中文标题】使用“SupressWhenMinimzed”安全关闭 RDP 会话后,远程计算机的屏幕分辨率发生变化【英文标题】:Screen resolution changes for the remote machine after safely closing the RDP session with "SupressWhenMinimzed" 【发布时间】:2016-03-08 08:15:28 【问题描述】:

首先对标题(可能不是那么具体)感到抱歉,因为它包含多个主题。

我遇到的问题与我的测试自动化设置有关。它由一个处理 BE + FE 和自己开始测试的 linux 机器组成。还有一个 Windows Server 2008(终端),我通过 RDP 会话连接到它,它是运行实际测试的地方。出于自动化目的,我使用 Ranorex。

首先我是如何设置 Win 机器的: 由于 Ranorex 是一个 GUI 测试自动化工具,它需要让组件对 AUT(被测应用程序)可见,因此您需要在不关闭会话本身的情况下关闭 RPD 客户端,否则测试将开始失败。

为此,我使用以下代码创建了一个 bat 文件:

%windir%\System32\tscon.exe RDP-Tcp#0 /dest:console

并在 HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client 下添加了一个 reg entry DWORD 值

RemoteDesktop_SuppressWhenMinimized

值为 2。

这样做是在以管理员权限运行 bat 文件后,它会关闭 RDP 会话,但仍会保持与 Win Server 计算机的终端连接打开,从而允许运行测试。

现在手头的问题是,在安全关闭会话后,为左打开会话设置的分辨率为 1024x768,而 RDP 连接打开时为 1920x1200。

最后是我自己无法回答的问题:是否有可能为保持打开的会话指定分辨率?

【问题讨论】:

在您的设置中使用 VNC 代替远程桌面是否可行?这就是我们这里使用的,没有分辨率问题。 到目前为止,我一直在将 VNC 的想法推回脑海,因为我已经看到当前设置的一些非常好的性能。我会尝试克服这个问题(我还没有做到),但如果没有找到解决方案,我一定会看看 VNC 的想法。谢谢 我使用了power-shell脚本。请参考Super User Question中的帖子 【参考方案1】:

我为我找到的唯一解决方案是在机器上安装一些 VNC 软件,连接到它,更改分辨率(在我的情况下也是 1920x1200),因为你不能从 RDP 做到这一点而且我没有访问真机。

我还下载了 QRes.exe 工具并将其添加到路径中。

最后创建这个脚本:

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
  %windir%\System32\tscon.exe %%s /dest:console
  timeout 5
  qres /X 1920 /Y 1080 /C 32
)

为其创建快捷方式(设置为以管理员身份运行),从现在开始,您可以通过 RDP (mstsc) 进行连接,但离开时只需单击上述脚本的图标,而不仅仅是关闭 RDP。

P.S.:Qres 设置为 1920x1080,因为它不支持 1920x1200,但在我的情况下(Windows 10),测试仍以 VNC 设置的分辨率运行 -> 1920x1200,所以没关系。

【讨论】:

【参考方案2】:

现在手头的问题是,在安全关闭会话后,为左打开会话设置的分辨率 > 为 1024x768,而当 RDP 连接 >打开时,分辨率为 1920x1200。

我也注意到了同样的事情。据我所知,您要远程连接的机器需要在物理(或虚拟)机器上具有默认分辨率 = 1920x1200。

我已使用 VNC 来解决此限制 - 但我能够找到的唯一信息可以防止该限制发生更改,即在所有机器上使用相同的默认分辨率。

祝你好运!

【讨论】:

这个问题是远程机器不是物理机器。这是一个VDI。尝试通过注册表设置默认分辨率,但即使它具有我正在寻找的正确分辨率的值,它仍然使用 1024x768(RDP 关闭后)【参考方案3】:

我不得不处理类似的问题。我通过在机器中安装 Dameware MiniRemote Control 代理解决了这个问题。通过 Dameware Mini Remote Control 应用程序连接到它后,您可以更改 RDP 中无法更改的分辨率。 (RealVNC 或类似的可能会像其他人建议的那样工作,我没有尝试过)

一些对我不起作用的解决方案

    QRes.exe /x:1920 /y:1200 http://qres.sourceforge.net/ Windows Management Instrumentation(内置):wmic desktopmonitor create screenheight=1920, screenwidth=1200 更改屏幕分辨率:http://tools.taubenkorb.at/change-screen-resolution/ 永久窗口:http://www.ninjacrab.com/persistent-windows/

【讨论】:

以上是关于使用“SupressWhenMinimzed”安全关闭 RDP 会话后,远程计算机的屏幕分辨率发生变化的主要内容,如果未能解决你的问题,请参考以下文章

使用线程安全或非线程安全的php?

Kotlin空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )

无法加载资源,因为应用传输安全策略需要使用安全连接

将 wsHttpBinding SSL 传输安全与消息安全结合使用有啥好处吗?

这种使用不安全的琐碎安全吗?

如何在安全上下文中使用不安全代码?