Let's break out the big guns.
Download and install the Application Compatibility Toolkit. That includes a program called the Compatibility Administrator, which comes in two versions, a 32-bit one and a 64-bit one. Run the one with the same bitness as the application you want to whack.
Background: Many applications claim they support a certain feature but then mess up the implementation. Microsoft deals with this all the time, and they have created compatibility infrastructure to reuse fixes for common problems. These fixes are implemented as shims, intercepting calls to the Windows API. We will use a shim that effectively cancels the application's declaration of DPI awareness. Other shims do fancier/configurable things (see CorrectFilePaths
), while some just lie to the application about its environment (like ForceAdminAccess
).
At the bottom of the Compatibility Administrator's left pane, you'll see a new entry in Custom Databases. Right-click it, and choose Create New → Compatibility Mode. Name it something (I used DpiMisbehavior
). In the left list, find DPIUnaware
and click the >
button to enable it. Click OK once you've done that.
Right-click the custom database again and choose Create New → Application Fix. Fill out the program name and vendor (these doesn't matter too much) and select the main EXE of the application. (This is where the bitness of the Compatibility Administrator is important.) Press Next when you've done that.
In Additional compatibility modes, scroll down and find the compatibility mode you created a moment ago. Check its box. Do a test run if you want, then hit Next.
Now, strictly speaking, you didn't need to create a compatibility mode because you can apply specific fixes here. I had you do that in case you need to add additional fixes to that mode later so they'll apply to all apps that you put under that mode. So you can just hit Next without doing anything on the Compatibility Fixes step.
Matching information is used to identify what app a program (EXE) represents. (It would be rather unfortunate if fixes were applied to programs that don't need them.) All checked entries must match for a program to get the fix. The Compatibility Administrator pulled these criteria values out of the EXE you specified earlier. The defaults are fine, or you can change them if you feel strongly about such things. Hit Finish when satisfied.
Repeat the Application Fix creation stuff for every program that needs it. Then press Save in the toolbar. Give it any name you want; I used DPI Repair
. Then save it wherever in the file system you want. You can use Open toolbar item and select that file if you need to modify it in the future.
Finally, right-click the newly-named custom database, and choose Install.
Oh yeah.
If, in the future, you do need to modify the compatibility database, just open it up, make the appropriate changes, hit Save, then do Reinstall; it'll just go right over the old version. In fact, you can copy this database to another computer and use the Compatibility Administrator to install it there without having to recreate it.
Optional entertainment: Expand the Applications entry under System Database to see a list of programs Microsoft had to fix with this infrastructure. Clicking on a program's entry will show you what fixes and compatibility modes were applied. Under Compatibility Fixes, you can see a full list of what fixes your computer can use.
You make a bat file script.
Things to change in commands
Make sure where the application is Placed
If the application is 64 bit "%programfiles%\<appfoldername>\<app>.exe"
If the application is 32 bit "%programfiles(x86)\<appfoldername>\<app>.exe"
~HIGHDPIAWARE
Indicates value of Override high DPI scaling behavior (Application)
~DPIUNAWARE
Indicates value of Override high DPI scaling behavior (System)
"~GDIDPISCALING DPIUNAWARE"
Indicates value of Override high DPI scaling behavior (System Enhanced) add double quote also
I am doing this for Itunes (64 bit).
Particular User
REG ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /V "%programfiles%\iTunes\iTunes.exe" /T REG_SZ /D ~HIGHDPIAWARE /F
All User
REG ADD "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /V "%programfiles%\iTunes\iTunes.exe" /T REG_SZ /D ~HIGHDPIAWARE /F
Best Answer
I think you're headed down the right path. I believe that display technology has actually accelerated faster than the software behind it. I too have had trouble with 4k and Linux. With that said, I have a couple of ideas and comments.
As a side note, you might consider getting involve in the community and submitting a feature request or bug report to the maintainers of the software you're trying to use.