Windows 10 users often complain that on high-resolution (4k HiDPI) monitors text, icons and other elements of legacy applications (that are incompatible with High-DPI screen modes) become too small, blurry and unreadable.
This problem has been partially fixed in the Windows 10 Fall Creators Update (1703) due to extra support of dynamic DPI scaling, however, when you connecting to the desktop of a remote computer using RDP, the scaling problem still persists (normal scaling for mstsc.exe client is still not supported).
In Windows 8.1 and Windows 10, the local DPI is sent to the RDP connection, as a result, the icons and text in this window become very small and hard to read.
As a workaround, you can use RDCMan application (by Microsoft) for RDP connections, but there is a solution for the native mstsc.exe client.
The point is that you can create a separate manifest file (.manifest) for the specific applications.
To make this feature work and in order Windows to get data from this manifest file first when starting the application, create a DWORD parameter (32-bit) with the name PreferExternalManifest and decimal value 1 in the following registry key: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide.
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide" /v PreferExternalManifest /t REG_DWORD /d 1 /f
Then in the % SystemRoot%\System32\ directory (it contains the mstsc.exe file), you need to create the mstsc.exe.manifest file with the following code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="amd64"
publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings= "http://schemas.microsoft.com/SMI/2005/WindowsSettings" >false</ms_windowsSettings:dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
Restart Windows and try to connect to the remote desktop computer or server using mstsc.exe. As you can see, the contents of the RDP window is displayed normally now.
In the same way, you can create a manifest file for any application that doesn’t support the native scaling.
4 comments
I have tested this on 3 windows 10 machines. The steps above work fine although for some reason we cant move the AX window from one screen to the other on any screen which is sitting on the right hand side of the laptop monitor. it works fine form right to left but not the left.
It is not working on a Dell XPS 7390 13.3UHD with 300% scale. It worked on a thinkpad t470p 2560×1440 half year ago. I dont get it. Is the 300% scale the problem? It is very funny to login to a 2k8 r2 rdp with the 13.3 uhd resolution.
Those who are unmotivated are always determined, those who are willing to stand up, and those who bite a goal are the most likely to succeed
❤️ thanks