- Trim characters from strings in PowerShell - Tue, Mar 14 2023
- Set Chrome, Firefox and Edge as default mail client (mailto handlers) - Mon, Mar 6 2023
- Show or hide users on the logon screen with Group Policy - Thu, Mar 2 2023
Microsoft announced for the latest releases of Windows 10 that it would improve the display of older applications on high-resolution screens. However, there has been limited progress where remote desktop sessions are concerned. This is especially true if you want to access virtual machine (VM) consoles running on Hyper-V.
Tiny screen elements
In most cases the problem is not the maximum resolution but the scaling of fonts and icons. If you start an RDP session in a window on a 4K monitor, most of the screen elements of the remote desktop appear so tiny by default that they are hardly legible.
This also applies to Windows 8 and above, where remote sessions adopt the scaling of the local system. If you open them in a window, the screen elements will inevitably be smaller.
The only place where I got satisfactory results in my tests is when running VMs on Hyper-V under Windows 10 or Server 2016/2019 and accessing them from Hyper-V Manager on these newer OS versions. In addition, one of these operating systems must run in the VM, and you must first select the scaling you want in the session on the client.
The full-screen mode is also not a real alternative. If you are working on a 28-inch or larger monitor, you usually do not want one application to fill the entire screen just to scale icons and fonts. If the remote host runs on Windows 7 or Server 2008 R2, the screen elements remain small even in full-screen mode.
Resolution and scaling are unchangeable in RDP sessions
On the local computer you can fix this unfavorable display by increasing the scaling under Windows 10 in the Settings app under System > Display. Under Windows 7, you can find this option in the Control Panel under Appearance and Personalization > Display.
In a remote desktop session, however, you can change neither the resolution nor the scaling. Instead, you specify the former either in the options of the RDP client or in vmconnect using the dialog that appears when you start the enhanced session mode.
However, the RDP client's display options do not allow you to scale up the screen elements, and within the session, the above settings are disabled. If you access Windows 10 or Server 2019 remotely, you can at least enlarge the text in the Settings app under Display.
But the benefit of this measure is limited because the other screen elements do not enlarge as well, and the description of the icons does not fit into the unchanged grid. Of course you could also change the view to large icons, but the taskbar and many applications do not adjust in accordance with the new text size.
This is especially true for the MMC-based admin tools, which generally have difficulties dealing with high-resolution monitors. For example, each pane of the Event Viewer uses a different font, with some responding to the enlargement and others not.
Basic session mode
If you access Hyper-V VMs, the Hyper-V Manager launches an RDP session through vmconnect. This offers two session modes: basic and enhanced. The latter is only available if the remote host is running at least Windows 8.1 or Server 2012 R2.
Neither mode requires remote desktop access explicitly enabled in the guest OS because the connection takes place directly through the Hyper-V host. In the basic version, from the perspective of the guest OS, there is no RDP session; hence you can change the resolution and scaling as on a local system.
However, this solution comes with some disadvantages. On the one hand, the maximum resolution is limited to 1920 x 1080, so the window on a 4K monitor covers only about a quarter of the screen. On the other hand, comfort functions such as copying and pasting are only available to a limited extent.
Zoom within the RDP client
Another way to improve readability in RDP sessions is to consider new features in the current RDP clients. For example, since Windows 8.1, they support so-called "smart sizing," and Windows 10 added "dynamic resizing" to vmconnect's enhanced session mode.
Both of these functions only increase and reduce the resolution of the remote desktop dynamically. Hence, they do not have an effect on the scaling.
More promising here is the zoom function of the native RDP client in Windows 10. They designed it to solve the problem of showing desktop elements too small, especially when accessing older versions of Windows. In practice, however, even a 125% zoom may lead to such poor font quality that you cannot use it permanently.
Unlike the Remote Desktop Connection Manager proposed as a solution in some forums, the open-source tool mRemoteNG is able to decouple the scaling of the local and remote computer. Thus, this tool is a viable option to overcome the problem of too-small RDP sessions.
The tool also has the advantage that you can use it to organize all VM connections under one interface. At least in this respect, it can replace the Hyper-V Manager, though it is of course not able to control the VMs.
Remote Desktop app
In addition to the native RDP client that comes with Windows, Microsoft has been offering a Remote Desktop app for quite some time, obtainable from the Microsoft Store. Unlike the normal RDP client, it allows you to preset the scaling for the session.
By default, sessions start in full-screen mode, or alternatively you can set a specific resolution or leave this selection to the app. In practice, it behaved only in full-screen mode as expected; otherwise, it failed when resizing the window.
So the display did increase, but it left all areas outside the original size blank. As it turned out, this is a bug affecting all Store apps. As a workaround, you can disable the screen animation feature "full window drag."
Generally, the app looks promising due to the available configuration options. Its restrictions on redirecting client resources to the remote session are probably acceptable in most cases.
Customized RDP Client
An interesting solution is on poweruser.blog. It consists of creating a copy of mstsc.exe and the corresponding .mui files and configuring them via a registry entry so remote sessions display independently of the client scaling.
If the name of the copy is mstsc2.exe, the following .reg file will set the necessary key:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers] "C:\\Windows\\System32\\mstsc2.exe"="~ DPIUNAWARE"
From now on, you can start connections to old versions of Windows that display screen elements too small via this modified client, while for all others the normal RDP client will be available.
Depending on the Windows versions on the client and on the remote host, there are various ways to scale the screen display. The best way to do this is to use the latest OS version everywhere and set the scaling you want in the client session.
Subscribe to 4sysops newsletter!
Want to write for 4sysops? We are looking for new authors.
Pretty interesting problem that I never knew existed with rdp. I'm still using win7 thin clients so I haven't seen any scaling issues, but I always run full-screen anyways.
Brilliant. Many thanks!
Shame, that mRemoteNG do its job better, than native mstsc tool. I try solve simmiliar issue for months. No way. 4k display unusable for work. And voila, mRemoteNG and yours post do it in 5 minutes :).
Now I can administer my 2019 Failover Clusters on 150% scaled 4K display without problems.
I absolutely LOVE that you don't just state "scaling problems exist with 4k monitors in certain RDP situations… use mRemoteNG and Bob's your uncle!" but you actually take the time to describe why the problem exists in the first place!
Don't get me wrong… the fact you offer a solution is icing on the cake. Too late to save my hair from stress-loss… but I digress 😉
I’ve been using this for a while. I’ve noticed though that the mstsc2 fix doesn’t give you the regular options of remote desktop to adjust local resources such as printer, sound, and keyboard. Is there an option to get the best of both world (dpi scaling and full control of keyboard/printer/sound)?
My suggestion is to save all your settings inside a regular yourname.rdp file (using the standard mstcs.exe) and then use the option Open with to open yourname.rdp with the modified mstcs2.exe.
Current version (1.77.1) of mRemoteNG has no support of multiple monitors. But there is another open-sourced solution, that has this feature – PRemoteM https://github.com/VShawn/PRemoteM
Another one suggested solution is to edit .rdp file with notepad. Try changing “screen mode id:i” parameter to 2 and then open your session in fullscreen.