Hi, I’m David Bélanger, a program manager on the Remote Desktop team working on the different Windows Remote Desktop clients.
In Windows 8.1 and Windows Server 2012 R2 we made some changes to Remote Desktop Connection (mstsc.exe) that greatly improve the experience for a few core scenarios that you might be using every day. In this blog, I discuss the improvements made to dynamically update the resolution and scaling level from the local system to the remote session and how this impacts your remote desktop experience.
Let’s start with the actual changes that we made in Windows 8.1 that will improve your remoting experience.
One of the changes we’ve made as part of RDP 8.1 is the addition of a new message that can be sent from the client to the server to dynamically update the resolution inside the remote session to match what is available on the client without the need to do a complete reconnect of the session. Previously, we only set the remote resolution during the initial connection. With this change, the resolution is set at connect time and can be updated when the client-side resolution changes while the app is in full screen mode, or when the app transitions from windowed mode to full screen. The resolution change is quick enough to be practically the same as a local change.
With the proliferation of High DPI devices (high resolution displays in a small screen size) such as the Microsoft Surface Pro 2 device, it is common for folks like me who need a little extra visual help to increase the size of the items on the screen by changing the scaling level in the Display options.
Figure 1: Changing the scaling level in the Display options in Control Panel
The second change I wanted to point out is that Remote Desktop Connection now also updates the scaling level in the remote session to match the client-side configuration. This includes the per-monitor scaling level, which is new in Windows 8.1 and makes it a lot easier to use monitors of different sizes such as a 10-inch Surface device connected to a 24-inch monitor.
In contrast to changing the display resolution, changing the system scaling level requires a logoff/logon so that non-dynamic DPI aware applications can load the appropriate resources for the new scaling level. Between the time you change the scaling level and log off your session, you will still notice a difference as Windows will dynamically scale applications to the new scaling level, but the result might vary slightly. For more details about this, see Windows 8.1 DPI Scaling Enhancements.
Similar to the resolution, the scaling level is sent to the remote system at connection time, when the app is entering full screen mode or when a change happens while it’s in full screen. When connecting to a new session, the scaling level is applied and applications in the session will load the appropriate resources. If connecting to an existing session that had a different scaling level than the client-side system or when the scaling level changes dynamically, the scaling level will be applied but will be handled by Windows as mentioned previously. Changing the scaling factor inside the remote session is disabled; you must change it on the local PC and it will automatically be updated in the session.
We’ve made a few changes around how Remote Desktop Connection handles full screen that are worth calling out.
To leverage the dynamic update features for resolution and scaling level, you must start the desktop session with a Display configuration set to Full Screen on the Display tab. Doing so tells Remote Desktop Connection to manage the resolution and scaling level for you and keep it in sync with changes happening locally.
Figure 2: Selecting the Display Configuration in Remote Desktop Connection
The Display tab also allows you to connect using a specific static resolution (by specifying a different resolution). If you connect with a specific resolution, you will not need to worry about the resolution changing during the session. This can be useful if you have applications or hosts that require a lower resolution.
Note: The dynamic update features are always enabled for RemoteApp programs.
We’ve also made it easier to go from having the remote session in windowed mode to full screen. First, the Ctrl+Alt+Break keyboard shortcut still allows you to switch between window and full screen mode. Next, you can simply maximize the window and it will go to full screen mode if the local and remote resolutions already match. Note that if the connection is started with a Display configuration of Full screen, the remote resolution is updated when maximizing and the app will automatically go into full screen mode on maximize. Lastly, for a more explicit action, there is a new Full screen menu item available in the system menu.
Figure 3: Full screen option in the system menu for Remote Desktop Connection
We’ve made a small change in the way we handle multi-monitor since we now support dynamically changing the resolution including adding and removing monitors. To handle this, the Use all my monitors for the remote session check box on the Display tab is always enabled (even if you only have a single monitor attached to your local PC), so you can choose whether you prefer single or multi-monitor mode at any point.
Figure 4: Use all my monitors for the remote session option in Remote Desktop Connection
This allows you to start a session in multi-monitor mode with only one monitor, attach a new monitor at a later time, and start using it in the session right away without requiring a disconnect and reconnect. You can still start a session in single monitor mode whether you have a single or multiple monitors attached if you only want the session to be using one monitor at a time.
The above changes are great, but what do they really mean for you during your day-to-day remote desktop usage? In this section, I cover 5 improved scenarios resulting from the features above.
In this scenario, you are using a system that has multiple monitors and at least two of them have a different resolution. You’ve also decided that you wanted the remote desktop to use only one monitor so you can continue using local applications or a different remote desktop on the second monitor. You did this by leaving the Use all my monitors for the remote session check box unchecked when connecting.
If after some time you decide to move the remote session to a new monitor with a different resolution, it’s as simple as dragging the session to the other monitor and going back to full screen mode. This will update the resolution and everything appears as expected for that monitor. No more letterboxing or dealing with scrollbars.
This scenario is often very common when using a laptop. For example, you come back to your office from a meeting and dock your laptop into a docking station that adds one or two external monitors. Or you arrive at a conference room already logged on to your laptop and connect it to the projector to share some content with the room. At the end of the meeting you detach from the projector to go back to your office.
Contrary to scenario 1 above, in this case you have started the remote session by checking the Use all my monitors for the remote session check box. This option now enables Remote Desktop Connection to dynamically add or remove monitors during the session.
So, you have an active remote session and add a new monitor. The first thing that happens is the session will go from full screen to windowed mode as Windows adjusts to the additional monitor (if the session was currently in full screen mode). Next, all you have to do is go back to full screen and a new virtual monitor will be added in the remote session and the session will be displayed in full screen mode across all the monitors. Follow a similar process to remove a monitor. No more need to disconnect and reconnect the session to leverage the new monitor.
RemoteApp now always uses all of your monitors (up to 16). If you are connected to a RemoteApp when you add the new monitor, you will immediately be able to move the app to the new monitor since the remote resolution is automatically updated to reflect the bigger desktop. Removing a monitor results in the RemoteApp program being moved back to one of the remaining monitors, similar to local applications. No more scenarios where RemoteApp programs are stuck on the first monitor or on a removed monitor.
With so many new form factors for devices including tablets, this is now a very common scenario. The dynamic resolution update now allows Remote Desktop Connection to handle rotations almost as fast as the local system does. If you are using a desktop session in full screen mode and rotate your device, the session will remain in full screen mode and the remote resolution will be updated accordingly so that everything appears the same as you’d expect locally.
If you have a RemoteApp program running in the maximized state and you rotate the device, the app remains maximized in the new orientation as the resolution is updated both locally and in the session. This is the same as local applications.
In both cases, no more waiting for the session to automatically do a full reconnect for each rotation, which can take a few seconds based on your network connection.
When connecting to a remote system, the scaling level will now be reflected in the remote session and applications in the session will appear the same as they do locally and be easier to read. No more squinting at the content inside the session because it appears smaller when connecting from a device with a higher scaling level.
On a system with a higher scaling factor, RemoteApp programs running side by side with a local application will now appear to be the same size and be just as easy to read. No more RemoteApp programs appearing smaller than local applications and being harder to read.
Windows 8.1 and Windows Server 2012 R2 provide improved remote desktop and RemoteApp experiences by dynamically updating the remote resolution and remote scale factor based on changes made locally (on the client PC), without the need to reconnect to the session. These features are enabled by default if both the client and the host are running Windows 8.1 or Windows Server 2012 R2. Dynamically updating the remote resolution is also available on Windows 7 clients connecting to Windows 8.1 or Windows Server 2012 R2 hosts with the Remote Desktop Protocol 8.1 Update for Windows 7 SP1 installed on the client.
Note: Questions and comments are welcome. However, please DO NOT post a request for troubleshooting by using the comment tool at the end of this post. Instead, post a new thread in the RDS & TS forum. Thank you!
What I'd really, really like to see in RDP is something between the existing "full screen" and "use all of my monitors" options...that is, I'd love to be able to run the RDP session full-screen, but only on a given subset of monitors--not all of them. Meaning, on the Display tab, it'd be nice to have all the monitors enumerated when "Use all my monitors" is checked, and have a checkbox next to each. That way, I could run my RDP session on 2 monitors, and leave my third one free to keep an eye on the apps I have running locally, or any other number of scenarios.
Any chance on releasing new version of RDCMan app? Current version gives errors on windows 8 and above.
this is a nice and great feature. But what is if i connect from my windows 8.1 client to an server 2008 r2 or server 2012? Is there also and rdp update for the server side?
Or is this feature only a client side feature?
@stefan there is no server side update for 2008 R2, you can connect with RDP 8.1 from a windows 7 of 8.1 client to 2008 R2 but you will not get the 'full 8.1 experience'
is this update allow to use multi monitor configuration even if connected host running win 7 professional (not ultimate)?
Please, let's see the "use subset" of monitors option, like Bob mentioned. Right now, we can RDP to a single monitor, or all of them. I'd REALLY like to be able to RDP to 2 monitors, and have another monitor dedicated to my local machine. I've been searching for a solution to this problem for years, and I've seen that there are many others in my situation.
I am remoting to a windows 7 PC running 1900 x 1080 display from a new 3200x1800 display (Yoga 2 Pro). I cannot figure out how to make the remote session full screen and have the icons and programs readable. The text and everything is extremely small.
+1 on the RDCMan issue. I prefer to use it but right now have gone back to RoyalTS due to the errors when connecting with RDCMan to multiple servers.
I read the 'comments' response to Stefan, but I'm still not sure about this :
Will the DPI scaling also work when establishing a remote desktop connection from Windows 8.1 to an older server, such as "Windows 2008 r2" ?
This was really an article that someone really smart decided to write but was completely helpless to the average person who uses RDP. I have a windows 7 machine in the office with a 19 inch monitor and new windows 8.1 ultrabook with windows 8.1. The screen resolution makes everything looks so small it is nearly impossible to read. No matter what I change I am not able to get it to a reasonable size. Can you explain your super duper magical programming to someone who actually uses the product in a business setting? The old version was very simple to change.
We are using TS to 'virtualize' our front service machines and we faced 2 issues with some internal apps
- It does write to folders on C:, expecting exclusive access. Its an app developed with a standalone mindset
- It does write to the registry too
Is there a way to virtualize these resources for each session on TS?
TS is cheaper and alrealdy in place for us than VMware virtual machines
Thanks a lot
I agree completely with Patrick. This is a very common problem when using newer laptops with ridiculously high native resolutions to connect via RDP to servers running at lower resolutions. Surely there is a way to scale the RDP window up to the laptop's native resolution so that it is usable. For example, the server's resolution is 1366x768, but the laptop's preferred resolution is 3200x1800. RDP should be able to scale a 1366x768 resolution window up to 3200x1800 on the desktop so that I don't need a microscope to see the server's screen. Right?
Is there a way to disable the dynamic scaling level update? I normally use my surface as a tablet and as such I increase the DPI setting to 125%. However when I remote to my desktop I use it as a laptop. When using a keyboard/mouse on my remote session I'd rather use the remote machine's scaling setting. Is there an easy way to tell RDP to respect the remote host settings?
Does anyone know if a work-around to the high-resolution issue could be connecting a second, normal resolution monitor to the high-resolution laptop?
I would really like to see an option to specify the monitor (in a multi-monitor system) to full-screen a remote desktop session to. Right now, I have to connect, move the session window to the desired monitor, close the connection, and then open a new session with the full screen setting selected. The current situation is frustrating since I have a 3 monitor system and keep multiple sessions open on different monitors (all monitors of different sizes and ages due to cost restrictions) and the default resolution and monitor selection behavior is annoying in this circumstance.