RemoteApp 最初未应用正确的缩放

RemoteApp 最初未应用正确的缩放

我有一个大型应用,我们推迟了对动态 DPI 的支持。目前,当我们在高 DPI 屏幕上通过 RemoteApp(RDP 到我们的 Windows Server 2016 服务器)启动应用时,文本和控件会重叠。

为了解决使用高 DPI 显示器的客户的问题,我们发现最好的解决方案是设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\终端服务器\WinStations\IgnoreClientDesktopScaleFactor改为 1. 这会阻止 RemoteApp 使用 DPI 缩放并使其看起来不错。

问题是窗口本身的尺寸一开始就非常小。 示例 1

如果您在本地 PC 上更改缩放比例,然后将其改回来,它将自动将窗口大小调整回正确的缩放比例。 示例 2 示例 3

我们更愿意使用这种解决方法,而不是向客户的电脑添加 mstsc 清单文件,但我们需要知道如何强制缩放从本地电脑的设置开始,同时仍然避免 DPI 缩放。

答案1

当从高 DPI 客户端监视器通过 RDP 进入低 DPI 服务器时,问题在于 RDP 窗口不会放大,而是逐像素地表示屏幕,因此使所有内容变得微小且难以阅读。

在文章中 HiDPI(Retina)显示屏上的远程桌面客户端:解决像素缩放问题,作者 Chris K. 提出了禁用 HiDPI 缩放以mstsc2.exe 使用 的解决方案AppCompatFlags。由于这对于系统可执行文件来说是不可能的,因此他提出了一个简单的解决方案,即创建mstsc.exe(称为mstsc2.exe) 的副本。

mstsc.exe在提升的(管理员)cmd shell 中,创建和的副本mstsc.exe.mui,其中en-us部分对应于已安装的语言:

cd %systemroot%\system32
copy mstsc.exe mstsc2.exe
cd %systemroot%\system32\en-us\
copy mstsc.exe.mui mstsc2.exe.mui

AppCompatFlag然后为所有用户设置mstsc2.exe

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /t REG_SZ /v "C:\Windows\System32\mstsc2.exe" /d "~ DPIUNAWARE" /f

现在应该能够启动mstsc2.exe并连接到远程主机,而不会出现任何扩展问题。

相关内容