我有一个大型应用,我们推迟了对动态 DPI 的支持。目前,当我们在高 DPI 屏幕上通过 RemoteApp(RDP 到我们的 Windows Server 2016 服务器)启动应用时,文本和控件会重叠。
为了解决使用高 DPI 显示器的客户的问题,我们发现最好的解决方案是设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\终端服务器\WinStations\IgnoreClientDesktopScaleFactor改为 1. 这会阻止 RemoteApp 使用 DPI 缩放并使其看起来不错。
问题是窗口本身的尺寸一开始就非常小。
如果您在本地 PC 上更改缩放比例,然后将其改回来,它将自动将窗口大小调整回正确的缩放比例。
我们更愿意使用这种解决方法,而不是向客户的电脑添加 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
并连接到远程主机,而不会出现任何扩展问题。