使用“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 会话后,远程计算机的屏幕分辨率发生变化的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )