I recently got a Microsoft Surface Pro, which has a high DPI display. Many apps do not display properly, because they are not DPI-aware. Here’s how to fix that in Windows 10/Windows Server 2016:
- If the program(s) you need to fix are in the Program Files folder(s), you’ll need Administrator rights.
- In your registry, tell Windows to prefer external program manifests over embedded ones:
- In RegEdit, go to the key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide
- Add a new DWORD 32-bit value:
PreferExternalManifest
and set it to1
.
- In RegEdit, go to the key:
- Create a text file in the same folder as the program with the exact same name as your the program including the .exe extension, and add a second extension, .manifest. So, if your program is called Program.exe, you’ll create a new text file called Program.exe.manifest.
- Edit the text file, and add the following code to it:
<?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>
Note that if you right-click and select Properties in Windows 10, there’s also a compatibility mode tab which has a setting that lets you override the application’s scaling properties. However, this doesn’t seem to work on an RDP connection. The manifest method above does work in RDP.