Theres really no way to make my 4k monitor 125 or 150% and leave my 1080p at 100%?
Theres really no way to make my 4k monitor 125 or 150% and leave my 1080p at 100%?
There was an error in my OP, I had an environment variable as a compatibility flag. I corrected it so the first change should be made in another place.
You can use this in conjunction with Windows 8.1's per-screen DPI settings to get the result you are describing
Theres really no way to make my 4k monitor 125 or 150% and leave my 1080p at 100%?
There was an error in my OP, I had an environment variable as a compatibility flag. I corrected it so the first change should be made in another place.
You can use this in conjunction with Windows 8.1's per-screen DPI settings to get the result you are describing
Theres really no way to make my 4k monitor 125 or 150% and leave my 1080p at 100%?
There was an error in my OP, I had an environment variable as a compatibility flag. I corrected it so the first change should be made in another place.
You can use this in conjunction with Windows 8.1's per-screen DPI settings to get the result you are describing
Hello! I'm new. It looks like this thread has been around for a while. And yes, new people are curious, me included.
I read through your registry update. I understand adding HIGHDPIAWARE to all of those Windows applications, at lerast. I'm not sure what the first three keys do, it would be nice to know what affects they have (I know you say it's a bunch of complicated stuff, but again, I'm curious).
Okay, now the real question( s ). I'm using a Surface Pro 2, which looks great at 150% DPI, and two 23" external monitors, which look great at 100% DPI. The closest I've gotten to making everything look good together is using the Display DPI properties, letting Windows adjust the DPI per monitor, and selecting the second-to-Smallest setting. This results in most applications looking good everywhere, with the exception of some Windows components (which I guess you are fixing) and software like Microsoft Office.
I personally have tried adding the HIGHDPIAWARE values for winword.exe or outlook.exe, and received mixed results... In some cases, the application would lay out like a desktop app and be clean and sharp, but then look terrible on the Surface itself, or in other cases the app would look great on the tablet portion but then on the desktop monitor size itself with everything all spread out so touch could work... I don't know.
If we use this registry update - what does it fix, exactly? Am I correct in saying this doesn't allow per-monitor DPI setting (I can't tell Windows to make my externals 100% and the SP2 150%) but it makes many Windows applications DPI aware so they'll adjust the way they should on the different monitors?
The registry edits made everything wonky and weird.
Thanks for all the effort you put into it though.
I take it to reverse the effect I just have to empty all the values set with this?
10/10 would not run again.
Update: It appears that setting __COMPAT_LAYER to "HighDpiAware" or "HIGHDPIAWARE" has the same effect as setting it to "blah", that is: (1) the flag is not intepreted, (2) it also stops any registry flags from being processed.
Update 9/10: Funny how this thread is getting responses 4 months later. I solved it and hadn't looked back, but the first part had mixed up the keys for environment variables and compatibility layers. Here's my all in one solution:
That's it! Stop reading here.Code:Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Environment] "__COMPAT_LAYER"="HighDpiAware" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment] "__COMPAT_LAYER"="HighDpiAware" [HKEY_USERS\.DEFAULT\Environment] "__COMPAT_LAYER"="HighDpiAware" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers] @="^ HIGHDPIAWARE" "C:\\Windows\\explorer.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\userinit.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\wininit.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\winlogon.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\smss.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\cmd.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\csrss.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\runonce.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\services.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\mmc.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\svchost.exe"="^ HIGHDPIAWARE" [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers] @="^ HIGHDPIAWARE" "C:\\Windows\\explorer.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\userinit.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\wininit.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\winlogon.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\smss.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\cmd.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\csrss.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\runonce.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\services.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\mmc.exe"="^ HIGHDPIAWARE" "C:\\Windows\\System32\\svchost.exe"="^ HIGHDPIAWARE"
Now you did it. There's a whole bunch of reasons this works that spans acronyms long enough to build a bridge with. It's components, managed assemblies, common runtimes, manifest preference, policy merging, environment inheritance, process invocation.... or if you prefer your acronyms: COM, GAC, MSIL, NI's, CLR, DCOM, PCA, MSDT, EDB and all their struts like XML serializers that keep track of this stuff. This is a sledgehammer that puts them to rest.
This is really where you should stop reading. If you continue past this point and apply the settings to you graphics adapters, those will work, but you may get all sorts of out of range memory issues. Like hitting PrtScr and your computer freezing. I was desperate and crossed the line there, but am leaving the info for reference. The reg fix above is safe and works.