【发布时间】:2017-10-18 13:20:50
【问题描述】:
我正在使用 VS2017,并使用 Windows 窗体应用程序为各种 RDP 设置文件制作了一个非常简单的“启动器”。这只是调用 Process.Start 并直接链接到 .rdp 文件,或者直接链接到 mstsc.exe
应用程序(和 RDP 会话)在标准 PC 上显示并正常工作。但是,我在 Surface Books/pros 等高 DPI 设备上遇到了问题。
RDP 客户端无法正确扩展是一个众所周知的问题,我们已经使用 manifest/reg 更改方法解决了这个问题。这是确认工作。双击 .rdp 配置文件也可以正常工作。
(https://www.blackforce.co.uk/2016/04/18/remote-desktop-rdp-resolution-on-a-surface-book)
我自己的应用程序也以正确的比例正确显示。但是,当我使用 Process.Start 启动 RDP 时,RDP 客户端的扩展性很差,就像在清单修复之前一样。我试过单独打开客户端,使用 .rdp 文件,结果是一样的。我手动打开了相同的 .rdp 文件,而不是通过我的应用程序,并且客户端已正确缩放。
任何人都可以复制这个,或者告诉为什么当以这种方式启动时忽略 mstsc 清单文件?我也试过使用 ProcessStartInfo 来设置 UseShellExecute 但结果还是一样。
【问题讨论】:
-
我的水晶球说您的 Winforms 应用程序启用了抖动强制,因此作为 32 位进程运行。所以将启动 c:\windows\syswow64\mstsc.exe,你没有破解的那个。顺便说一句,PreferExternalManifest hack 实在是太愚蠢了,这与通过全局解决方案解决局部问题所造成的损害完全不同。注册表项的 32 位视图位于 Wow6432Node 中。使用 Project > Properties > Build 消除抖动强迫。
-
嗨汉斯,你能把你的评论作为答案,所以我可以这样标记它,因为它解决了我的问题!非常感谢。至于 PreferExternalManifest hack - 我同意,但我不知道更具体的修复?再次感谢!标记
-
要是我知道如何摆脱那种可怕的感觉就好了。请在 superuser.com 上询问。如果您对此感到满意,请自己发布答案。
标签: winforms visual-studio scaling rdp mstsc