Jump to content

WINPE UEFI and DPI Setings


andyle2k

Recommended Posts

Hi All,

 

I have a huge problem with WINPE booting in UEFI (x64) mode and the auto DPI scaling it performs.

 

I've tried setting up an Unattend.xml with the DPI settings but with the DPI element included, the whole XML is ignored. As soon as I remove the DPI setting the XML works fine.

 

Another approach I've tried is using the startnet.cmd to set the registry for FontDPI to 96 but that doesn't fix it either.

 

Does anybody know how to fix this or disable the DPI scaling altogether for WINPE? To be clear this is in WINPE not OOBE.

 

Booting the WINPE in x86 BIOS mode does not trigger the auto DPI scale.

 

Thank you very much.

Link to comment
Share on other sites


It is by design since WinPE4. You'll need to rewrite your GUI to handle the different scaling that may occur. This was the answer I got when I opened a support case with MS in 2013.

Here was my first topic about it (see also the Technet link for more info)

http://www.msfn.org/board/topic/162510-unable-to-set-resolution-in-winpe4/

Here is the challenge you may face while working with UEFI mode on a 4k display:

http://www.msfn.org/board/topic/173469-uefi-installation-on-a-4k-native-display/

Link to comment
Share on other sites

Yes the DPI setting is only for Windows itself, not setup/WinPE.

If you know the size of a US quarter, then you can see how a UEFI only tablet looks like with the Gimagex HTA that I have in my signature:

20150610_120927_zpsirxjobrm.jpg

While the text specified by the HTA scaled "appropriately" I can tell you that must custom imaging GUI (which is not shown) is super tiny. As long as this remains to be true, I will eventually have to learn how to program my GUI to scale as well. So I feel your pain.

Link to comment
Share on other sites

Do you know exactly WHEN WINPE sets the DPI settings? I'm thinking if we're able to set the FontDPI\LogPixels registry settings after it autosets the DPI settings but before it loads the display?

 

Also, if we can set the registry then "log out" of WINPE then log back in without a restart the new DPI settings should stick right? Anybody know how to log out of WINPE and back in? Projects like WIN8.1SE seem to be logging in and out.

 

Thanks.

Link to comment
Share on other sites

  • 2 years later...

I am shocked by this; there must be a some way, even if it is heavy handed or hacky. I also attempted modifying the BCD store including the vga flag, novga flag, graphicsresolution string, etc... No effect.

 

 

 

Link to comment
Share on other sites

I'm actually looking into this again...

Ref: https://www.autoitscript.com/forum/topic/194443-checkbox-rendering-issue-on-certain-displays/

EDIT: in regards to my issue, mines is specifically dealing with an application that does not render properly on some DPI settings in WinPE 10, however this particular issue is not relevant to anything based on HTA which can be fixed.

NOTE: this does not help:
https://michlstechblog.info/blog/windows-pe-disable-autoscaling/

This is the next thing i will look at: https://chentiangemalc.wordpress.com/2017/05/22/force-dpi-scaling-for-configuration-manager-console/

Link to comment
Share on other sites

Using the Application Compatibility Toolkit is a pain! if you run it on Windows 7, it won't show the DPIUnaware option, but getting the ACT to run on Windows 10 is difficult. I had to install and reinstall it 3 times before it would open. Otherwise, it would just say that the program doesn't support the OS.

Even so, this method will not work for Windows PE, precisely because you can't install the database into WinPE without extensive work. You can't run sdbinst.exe from a mounted dir, because there are numerous dependencies missing. I may get back to it later, but debugging the dependencies may take more time than I am willing to invest currently.

Using the registry keys for compatibility do not seem to do anything in WinPE.
 

REG ADD "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /V "C:\Program Files(x86)\folder\app.exe" /T REG_SZ /D "~ DPIUNAWARE" /F

Var list:

"~ HIGHDPIAWARE" = Override high DPI scaling behavior (Application)

"~ DPIUNAWARE" = Override high DPI scaling behavior (System)

"~ GDIDPISCALING DPIUNAWARE" = Override high DPI scaling behavior (System Enhanced)

Back to the drawing board.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...