RDP和高分屏笔记本缩放的那些事

我有一台14寸的联想YOGA710,配备了1080P的高分触摸屏

昨天我用它远程连到我的台式机上,发现RDP会调整DPI缩放适应客户机的显示,然而我用的很多程序对DPI缩放支持欠佳(T-Clock, Open-Shell开始菜单……),系统控件也割裂地显示模糊……

我在联想笔记本设定的是125%缩放(默认是150%),我的台式机显示器是戴尔U2412M,1920×1200 不配置缩放。

此前我用的是10寸WXGA普屏(1280*800)的惠普X2 210平板,由于同样不配置缩放,故不存在这个问题。只是觉得屏幕太小,所以换到14寸的联想。

众所周知Windows的高分屏一直以来都是令人诟病的话题,几乎不能从根本解决,只能妥协。很不幸,使用远程桌面也没有逃过命运的魔爪(雾)


目前来说,限定Windows客户端和服务端下有三种解决方案:

  • 使用UWP版本的RD Client(M$ Store中文名:远程桌面)
  • 修改台式机分辨率为2K的超分辨率,并设置与客户机一致的DPI缩放
  • 设置台式机的RDP不配置缩放

首先UWP的RDC客户端在触屏的效果很好,但不适合鼠标使用,上下自动隐藏的任务栏很烦人,不过本来就是为移动端平板和手机(可追溯至Metro时期)设计的版本(可作备选)

台式机设置超分辨率(类似黑苹果)会占用显卡性能(我还在用GTX650Ti 1GB版),最主要是Windows平台有大量软件基于点阵显示,高DPI会严重影响显示效果,而且打游戏还要调回来

最终选择的是第三种方案,设置台式机的RDP不响应客户机缩放,14寸1080P的100%缩放也不是不能看,更何况YOGA可以翻转成平板的形态,点距效果和很多手机类似了。

修改注册表

在服务端(台式机)打开注册表,复制在地址栏并跳转到 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations

新建DWORD值 IgnoreClientDesktopScaleFactor 设置十六进制数据为1

即可忽略客户机的缩放

客户机超分辨率

我在YOGA710安装过黑苹果,折腾过HiDPI的缩放,记得macOS的Retina机制只有200%缩放,通过翻倍逻辑像素再缩放到物理显示器上,我设置的是1440×810@HiDPI,和以前的1440×900点距类似,翻倍就是2880×1620(2K分辨率)

在Windows下使用200%也可以直接放大像素而不产生模糊,因此我对200%的显示效果甚是憧憬。可惜笔记本的显卡一般不允许更改内置屏幕的分辨率,特别是牙膏厂(Intel)和黄刀厂(NVIDIA)的驱动(反而AMD的Vega M核显驱动可以修改,AMD YES)

没关系,可以用万能的注册表解决这个问题

虽然Windows大量采用点阵与线条的图标,这么操作会丢失一些显示细节,微软雅黑的字体也没那么锐利了,嘛……就当OLED用吧

问题来了,由于刚才在台式机(服务端)设置了忽略客户机缩放(强制100%),如果使用系统自带的RDP客户端配置2K分辨率全屏

那么文字和控件就会像蚂蚁一样小,几乎看不清,甚至不如1080P:

建议搭配CS1.6 老AUG的伸脖子倍镜(

这时候有两个解决方案:

  • 用UWP的RDC客户端,指定分辨率为1080P不缩放,完美点对点显示
  • 创建一个mstsc.exe的副本,设定为“系统”的DPI缩放兼容性,直接拉伸放大画面(但是会模糊)

参考了:

Remote Desktop client on HiDPI (Retina) displays: Work around pixel scaling issues | by Chris | poweruser.blog
If you work on a laptop with a 4K HiDPI or Retina display (like I do on my Surface Book) and need to RDP into non-HiDPI remote machines (i.e. Windows 7 clients), you might have encountered this…
poweruser.blog

管理员运行cmd,创建mstsc.exe和mui语言文件的副本

cd %systemroot%\system32
copy mstsc.exe mstsc2.exe
cd %systemroot%\system32\zh-cn\
copy mstsc.exe.mui mstsc2.exe.mui

并添加注册表

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

然后去system32目录下会多出一个mstsc2的exe,配置与原版共通,但是设定了拉伸缩放

这样显示的分辨率即为1440×810(当然画面都是马赛克了)


一些其他的思路

高分屏的事情在我用笔记本外接显示器的时候就很头疼了,RDP居然也保留了这个“坏特性”,在Windows同样还有一个性质的问题是广色域显示器,说多了都是泪……

一劳永逸的办法是直接用100%缩放的分辨率和对应的设备,比如1600x900P的笔记本,点距舒适的同时效果最好。即使1080P降分辨率到900P,只要不凑近看,当P-OLED大果粒屏幕也不是不能用(x

分辨率1600×900的笔记本一般有ideapad Yoga 13、ThinkPad X1 Carbon 14或者T420改,但现在很难找到用IPS的机型了,又或者都是天价。

往下一档是1440×900了,主要还是3代i5的老款MacBook Air 13寸,足够轻薄,但同样是天价(我确实有一台MacBook Air,可惜是11.6寸的768P屏幕,连系统偏好设定都显示不全)

也见过X220改900P的高分屏,感觉还是有点小。1366×768就完全不推荐了,毕竟这是个上网本都在用1280×800的年代,屏幕也太小了。

怀念2000年代SXGA+ 1440×1050分辨率的14寸方屏


另外一个思路是把台式机的主屏换成对应客户机缩放的高分屏,然后开固定缩放(打游戏降分辨率也不会错位模糊),然而我买不起200%缩放的4K显示器,显卡也带不动……

那么就只能选125%缩放的了!

我看了一下25英寸2K显示器的价格……还是告辞了

不过2K显示器也不是一无是处,好处是可以点对点显示不支持DPI缩放的程序,兼容性好;而且下面还可以摆个8寸的WXGA副屏,125%缩放1024×640,甚至随便找个安卓板子都能用。(搭配2560×1600食用更佳,窗口能同时五五开)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注