• Disabling DPI Virtualization for 64-bit apps?

    Home » Forums » AskWoody support » Windows » Windows 7 » Questions: Windows 7 » Disabling DPI Virtualization for 64-bit apps?

    Author
    Topic
    #474770

    Hi,

    I run Windows 7 at 120 DPI (125%) and I appreciate the DPI Virtualization feature that it gives you if you have the “Use Windows XP style DPI scaling” box unticked, because a lot of apps don’t know how to work with anything other than 96 DPI.

    However, I have an application which *does* know how to work with higher DPI settings, and yet doesn’t declare itself DPI-aware, so Windows 7 uses DPI Virtualization on it. I would normally disable this for the app by making sure the “Disable display scaling on high DPI settings” box is unticked in the Compatibility tab for the app, but this particular program is 64-bit and as such Windows 7 doesn’t let me alter those settings. It’s kind of annoying. :/

    Does anybody know of a way to force Windows not to use DPI Virtualization for this app without turning it off globally? I’ve already submitted a bug report to the developers asking them to declare it DPI-aware, but I’d really like to be able to use this now without waiting for a new version to come out.

    Viewing 0 reply threads
    Author
    Replies
    • #1273029

      Hi,

      I run Windows 7 at 120 DPI (125%) and I appreciate the DPI Virtualization feature that it gives you if you have the “Use Windows XP style DPI scaling” box unticked, because a lot of apps don’t know how to work with anything other than 96 DPI.

      However, I have an application which *does* know how to work with higher DPI settings, and yet doesn’t declare itself DPI-aware, so Windows 7 uses DPI Virtualization on it. I would normally disable this for the app by making sure the “Disable display scaling on high DPI settings” box is unticked in the Compatibility tab for the app, but this particular program is 64-bit and as such Windows 7 doesn’t let me alter those settings. It’s kind of annoying. :/

      Does anybody know of a way to force Windows not to use DPI Virtualization for this app without turning it off globally? I’ve already submitted a bug report to the developers asking them to declare it DPI-aware, but I’d really like to be able to use this now without waiting for a new version to come out.

      Hello. I encountered exactly the same problem with GIMP (x64 version). While I was looking for a solution, I googled this thread, and later found the solution.
      You will have to modify the compatibility flags for your application directly in the registry (using regedit) as Windows’ dialog grays out the checkboxes.
      You can find all the application compatibility flags at the following location in the registry: HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionAppCompatFlagsLayers
      In that key, create a String entry with:
      Name = The full path to the .exe of your application
      Type = String (REG_SZ)
      Data = HIGHDPIAWARE

      Close regedit then start your application.
      It works!

      I hope this answer will be useful to you or other people who find this thread.
      I don’t get why Microsoft chose to gray out the checkboxes since this actually works…

      • #1274529

        Great, thanks! I’ll remember this for future use – I worked around the problem myself by using Microsoft’s mt.exe tool to modify the manifest of the EXE and add the appropriate tags to declare it DPI-aware, but this way looks like it should be simpler! 😀

        • #1274608

          I am running Microsoft Security Essentials and a DPI of 150% I tried the registry edit and it put a check mark in the proper place under compatibility, but the bottom text of the Scan details is still cut off and the size has not changed. Changing the window size does not help either..

          • #1274716

            I am running Microsoft Security Essentials and a DPI of 150% I tried the registry edit and it put a check mark in the proper place under compatibility, but the bottom text of the Scan details is still cut off and the size has not changed. Changing the window size does not help either..

            Two remarks about your screenshot:
            – If the screenshot is close to the actual size of your screen, I’d say your screen is too small to use the 150% setting on. I think it’s only useful for screens with a resolution of 1920×1080 or above. I say this because the window doesn’t even fit in the screenshot (cut at the bottom) and you can’t do anything about that if it isn’t resizable, unless you use another setting like 125%. Of course this is up to your personal preference…
            – Otherwise, the best setting for this application, as it seems it doesn’t properly support high DPI (cf the cut-off text at the bottom) should be to actually use DPI virtualization. For that you have to remove the registry entry you just added and check that in the Windows DPI settings window the “Use Windows XP style DPI scaling” box is unticked (it’s ticked by default). After that you should get the program to display correctly, just scaled up by the graphics card (will get blurry though)

            • #1274747

              Thanks for the reply. My screen resolution is 1,600×900. Not sure what your browser is showing, but my window capture by MS snipping tool is 1,203×840 and is re-sizable. The “Use Windows XP style DPI scaling” box is unticked. The registry change to HIGHDPIAWARE made no difference to the size of the Window or font used. The program suggested “mt.exe” does not look like something I want to play with.

            • #1293579

              Hi ldb,

              You actually have the opposite problem to the one I posted about! In this case you probably want to force DPI Virtualization *on* rather than force it *off*, which is what the method suggested was for.

              Before I talk about the solution, let me explain a bit. The way DPI Virtualization (the blurry zooming) works is that it’s always on by default, and is only turned off if an application explicitly says to Windows “I can handle DPI properly”. This is what MSE has done in this case.

              As a result, Windows assumes they know what they’re talking about. Unfortunately, sometimes that trust is misplaced, as you’ve found out here. In this case, the “best” solution is to talk to the developers of the program in question to let them know that, actually, their program *doesn’t* do it properly, so they can fix it. Of course, since in this case Microsoft is a big company, it’s possible that your bug report might not get to the appropriate people, which means that you may need to take matters into your own hands.

              The problem is, there are two different methods a program can use to tell Windows that they’re DPI-aware. The first is via a system call within the program itself called SetProcessDPIAware. If the program does it this way then you’re probably out of luck unless you’re handy with a disassembler and binary editor. (And I believe that disassembling is against the EULA for MSE, too.)

              The second method a program can use is to do it via what’s known as the “application manifest”. If this is the case, then you can do it, but you’ll need to use the mt.exe tool I talked about earlier, which is a command-line tool. It’s not available as a separate download on its own, unfortunately, but requires you to download the whole Windows SDK. I’m not sure if I’m allowed to distribute mt.exe on its own, or I would do so!

              Although I can give you instructions on what to do, I imagine that the trouble to do that is probably not worth it; you’re probably better off waiting to see if a new version comes out that fixes it, or sending an email to Microsoft, just in case they actually take note of it.

              (If you do want me to continue, let me know!)

            • #1293593

              Thanks for the offer, I am just living with the smaller fonts for now. I submitted a case to MS and am waiting to see if they do anything. A new version has come out and the issue is not resolved yet. The next time an new version is issued I will test it again and if not resolved will try and reopen the case.

    Viewing 0 reply threads
    Reply To: Disabling DPI Virtualization for 64-bit apps?

    You can use BBCodes to format your content.
    Your account can't use all available BBCodes, they will be stripped before saving.

    Your information: