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.