前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows远程设置分辨率DPI缩放

Windows远程设置分辨率DPI缩放

原创
作者头像
Windows技术交流
修改2024-04-16 13:10:20
5770
修改2024-04-16 13:10:20
举报
文章被收录于专栏:Windows技术交流Windows技术交流

Server2008R2,远程分辨率DPI缩放默认是100%,无法调整,但不知道阿里云咋实现的,能调整,肯定是改什么东西了,微软默认的产品设计是不允许远程改DPI缩放的。后来,我自己查到微软资料,发现是KB3125574这个补丁实现的。

微软帖子里提到KB2749655,单独安装上KB2749655似乎没啥作用,估计不能单纯只安装KB2749655,于是继续查资料,发现有个非常关键的补丁KB3125574,它里面包含了100多个补丁,其中就有KB2749655,安装上KB3125574实现了Win7/2008R2远程调整分辨率DPI。据说KB3125574便利汇总(convenience rollup)包含从Windows 7 SP1发布后至2016年4月所发布的所有安全和非安全更新,它总共包含上百个补丁,也适用2008R2。并且,这个KB3125574还有依赖,必须先安装KB3020369(微软要求),再安装KB3125574,否则安装不上KB3125574。

https://catalog.update.microsoft.com/Search.aspx?q=KB3020369

x86:https://catalog.s.download.windowsupdate.com/d/msdownload/update/software/updt/2015/04/windows6.1-kb3020369-x86_82e168117c23f7c479a97ee96c82af788d07452e.msu

x64:https://catalog.s.download.windowsupdate.com/d/msdownload/update/software/updt/2015/04/windows6.1-kb3020369-x64_5393066469758e619f21731fc31ff2d109595445.msu

https://catalog.update.microsoft.com/Search.aspx?q=KB3125574

http://wuyou.net/forum.php?mod=viewthread&tid=439882

x86:https://catalog.s.download.windowsupdate.com/d/msdownload/update/software/updt/2016/05/windows6.1-kb3125574-v4-x86_ba1ff5537312561795cc04db0b02fbb0a74b2cbd.msu

x64:https://catalog.s.download.windowsupdate.com/d/msdownload/update/software/updt/2016/05/windows6.1-kb3125574-v4-x64_2dafb1d203c8964239af3048b5dd4b1264cd93b9.msu

https://support.microsoft.com/en-us/topic/you-cannot-change-the-dpi-setting-through-a-remote-desktop-session-on-a-computer-that-is-running-windows-7-or-windows-server-2008-r2-bae8715f-ee0e-2252-002c-a70653181042

https://support.microsoft.com/zh-cn/topic/you-cannot-change-the-dpi-setting-through-a-remote-desktop-session-on-a-computer-that-is-running-windows-7-or-windows-server-2008-r2-bae8715f-ee0e-2252-002c-a70653181042

正是考虑到Server2008R2远程分辨率DPI缩放默认是100%,在一些高清屏的客户端远程2008R2时,2008R2的字确实很小,有碍观瞻,于是从2012R2开始,微软远程分辨率DPI缩放级别默认是150%。但不知道阿里云咋实现的,阿里的Server2008R2能在远程会话里调分辨率DPI缩放级别。

2008R2:

先远程上机器 ,然后 桌面右击→ 屏幕分辨率→ 放大或缩小文本和其他项目

阿里:

微软默认设计:

缩放级别 10进制 16进制

Small 100% (default) 96 0x60

Medium 125% 120 0x78

Large 150% 144 0x90

Extra Large 200% 192 0xC0

代码语言:powershell
复制
HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics 这个注册表下面的这些键分别什么作用
AppliedDPI
CaptionFont
IconFont
MenuFont
MessageFont
SmCaptionFont
StatusFont
IconSpacing
IconVerticalSpacing
代码语言:powershell
复制
HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics 注册表键包含了与 Windows 用户界面(UI)度量和字体相关的设置。以下是您提到的每个键的作用:

AppliedDPI:此键表示当前屏幕的 DPI(每英寸点数)设置。DPI 设置会影响屏幕上显示的文本和图像的大小。

CaptionFont:此键包含标题栏文本的字体设置,例如窗口的标题栏。

IconFont:此键包含桌面图标文本的字体设置。

MenuFont:此键包含菜单文本的字体设置,例如文件菜单、右键上下文菜单等。

MessageFont:此键包含消息框文本的字体设置,例如对话框中的文本。

SmCaptionFont:此键包含小标题栏文本的字体设置,例如工具窗口的标题栏。

StatusFont:此键包含状态栏文本的字体设置,例如任务栏中的时钟文本。

IconSpacing:此键表示桌面图标之间的水平间距。

IconVerticalSpacing:此键表示桌面图标之间的垂直间距。

如果没有改造过,默认情况下Server2008R2无法在远程会话更改缩放级别

DPI缩放的关键注册表键值虽然只要这2个,但相关的其他键值很多,改这2个,会影响其他的

reg query "HKCU\Control Panel\Desktop"|findstr LogPixels

reg query "HKCU\Control Panel\Desktop\WindowMetrics"|findstr AppliedDPI

上图150%是我用注册表调的,但是调完重启机器后,远程会话里字并没有变大,反而变得很小很小,比100%缩放级别小很多,甚至小到看不见。这样复现:

代码语言:powershell
复制
首先,通过注册表缩放200%
reg query "HKCU\Control Panel\Desktop"|findstr LogPixels
reg query "HKCU\Control Panel\Desktop\WindowMetrics"|findstr AppliedDPI

$RegistryKeyPath1 = "HKCU:\Control Panel\Desktop"
$Name1 = "LogPixels"
$Value1 = 192
Set-ItemProperty -Path $RegistryKeyPath1 -Name $Name1 -Value $Value1

$RegistryKeyPath2 = "HKCU:\Control Panel\Desktop\WindowMetrics"
$Name2 = "AppliedDPI"
$Value2 = 192
Set-ItemProperty -Path $RegistryKeyPath2 -Name $Name2 -Value $Value2

reg query "HKCU\Control Panel\Desktop"|findstr LogPixels
reg query "HKCU\Control Panel\Desktop\WindowMetrics"|findstr AppliedDPI

restart-computer -force

其次,通过注册表缩放150%
reg query "HKCU\Control Panel\Desktop"|findstr LogPixels
reg query "HKCU\Control Panel\Desktop\WindowMetrics"|findstr AppliedDPI

$RegistryKeyPath1 = "HKCU:\Control Panel\Desktop"
$Name1 = "LogPixels"
$Value1 = 144
Set-ItemProperty -Path $RegistryKeyPath1 -Name $Name1 -Value $Value1

$RegistryKeyPath2 = "HKCU:\Control Panel\Desktop\WindowMetrics"
$Name2 = "AppliedDPI"
$Value2 = 144
Set-ItemProperty -Path $RegistryKeyPath2 -Name $Name2 -Value $Value2

reg query "HKCU\Control Panel\Desktop"|findstr LogPixels
reg query "HKCU\Control Panel\Desktop\WindowMetrics"|findstr AppliedDPI

restart-computer -force


最后,通过注册表还原到缩放100%
reg query "HKCU\Control Panel\Desktop"|findstr LogPixels
reg query "HKCU\Control Panel\Desktop\WindowMetrics"|findstr AppliedDPI

$RegistryKeyPath1 = "HKCU:\Control Panel\Desktop"
$Name1 = "LogPixels"
$Value1 = 96
Set-ItemProperty -Path $RegistryKeyPath1 -Name $Name1 -Value $Value1

$RegistryKeyPath2 = "HKCU:\Control Panel\Desktop\WindowMetrics"
$Name2 = "AppliedDPI"
$Value2 = 96
Set-ItemProperty -Path $RegistryKeyPath2 -Name $Name2 -Value $Value2

reg query "HKCU\Control Panel\Desktop"|findstr LogPixels
reg query "HKCU\Control Panel\Desktop\WindowMetrics"|findstr AppliedDPI

restart-computer -force

我自己最后咋解决的?步骤介绍下:

①组策略配置远程桌面会话主机→ 连接,进行如下配置

"拒绝将已经登录到控制台会话的管理员注销"--禁用

"将远程桌面服务用户限制到单独的远程桌面服务会话"--启用

②配置自动登录

代码语言:powershell
复制
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUserName" /d "Administrator" /t REG_SZ /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultPassword" /d "密码" /t REG_SZ /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" /d "1" /t REG_SZ /f
注意具体化密码

③重启机器(重启后由于配置了自动登录,vnc会优先登录),在vnc里设置DPI缩放到较舒适的级别比如150%

④rdp远程连接(此时,由于是单会话,vnc的150%缩放级别被rdp切走沿用,此时如果注销再远程,此时没有vnc了,就不会是150%了,所以,不要从远程会话中注销,只可重启,因为重启后vnc会自动登录沿用前次配置的150%缩放,然后再rdp时会切走vnc沿用其缩放级别)

以上4步只是勉勉强强的效果,并不是真的150%的缩放效果,因为有bug,实际看到的字仍然很小,但比小到无法看清已经好多了。要真正恢复的话,就从正常机器导出这个路径的注册表HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics 导入后重启机器。

以上DPI缩放的bug一直持续到Server2022才修正。低版本系统安全性、功能性、健壮性相对来说都不如最新版系统。

不一样的发现:

Server2016/2019/2022,是类似设置,先远程上机器→ 桌面右键→ 显示设置→ 高级缩放设置→ 输入数字比如200,Server2019按钮是灰色的,而2016和2022的高级缩放设置里,按钮是亮的

"无法从远程会话更改显示设置"这句话在server2016/2019/2022远程会话调整分辨率DPI缩放时都有,2019为何体验不一致?

微软的解释是bug,且不打算修。

整体来讲,要想把远程分辨率DPI缩放搞到比较舒服的大小,本人在不同版本Windows系统多次测试,发现Server2022系统是最佳选择(其他的系统,同样的方法,要么只是图标放大了,不同位置的字体大小却不完全匹配,很不协调,只有Server2022完美)

步骤如下

一、远程上去执行命令

注意具体化密码

代码语言:powershell
复制
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUserName" /d "Administrator" /t REG_SZ /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultPassword" /d "密码" /t REG_SZ /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" /d "1" /t REG_SZ /f

reg query "HKCU\Control Panel\Desktop"|findstr LogPixels
reg query "HKCU\Control Panel\Desktop\WindowMetrics"|findstr AppliedDPI

$RegistryKeyPath1 = "HKCU:\Control Panel\Desktop"
$Name1 = "LogPixels"
$Value1 = 192
Set-ItemProperty -Path $RegistryKeyPath1 -Name $Name1 -Value $Value1

$RegistryKeyPath2 = "HKCU:\Control Panel\Desktop\WindowMetrics"
$Name2 = "AppliedDPI"
$Value2 = 192
Set-ItemProperty -Path $RegistryKeyPath2 -Name $Name2 -Value $Value2

reg query "HKCU\Control Panel\Desktop"|findstr LogPixels
reg query "HKCU\Control Panel\Desktop\WindowMetrics"|findstr AppliedDPI

reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Win8DpiScaling /t REG_DWORD /d 1 /f

二、配置组策略

组策略配置远程桌面会话主机→ 连接,进行如下配置

"拒绝将已经登录到控制台会话的管理员注销"--禁用

"将远程桌面服务用户限制到单独的远程桌面服务会话"--启用(默认就是启用的,但以防万一,还是显性配置下)

三、重启机器后rdp远程连接

重启后由于配置了自动登录,vnc会优先登录,在vnc里设置DPI缩放到较舒适的级别比如200%

此时,由于是单会话,vnc的200%缩放级别被rdp切走沿用,此时如果注销再远程,此时没有vnc了,就不会是200%了,所以,不要从远程会话中注销,只可重启,因为重启后vnc会自动登录沿用前次配置的200%缩放,然后再rdp时会切走vnc沿用其缩放级别)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 阿里:
  • 微软默认设计:
  • 不一样的发现:
  • 整体来讲,要想把远程分辨率DPI缩放搞到比较舒服的大小,本人在不同版本Windows系统多次测试,发现Server2022系统是最佳选择(其他的系统,同样的方法,要么只是图标放大了,不同位置的字体大小却不完全匹配,很不协调,只有Server2022完美)
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档