Setting DPI in unattend.xml may not work if region settings are changed during OOBE

Applies to: Windows 8Windows 8 ProWindows 8 Enterprise

Symptoms


Consider the following scenario:
  • You are an OEM or System Builder that is building a Windows 8 image for deployment.
  • In the unattend.xml, you specify a custom DPI setting larger than 108 as the default to be used by Windows using the following setting:

    <Display><DPI>144</DPI></Display>
  • During OOBE a user makes changes to settings at the Region and Language screen.

In this scenario, when the user boots to the desktop the DPI will be set to 120, which also corresponds to "Medium - 125%" in the Control Panel Display settings.

Cause


This behavior is due to legacy Windows code that prevented a DPI of greater than 108 being used to ensure optimal performance and display in Windows.

Resolution


To work around this issue, the setupcomplete.cmd scipt can be used to manually set the DPI in the registry to the desired number after Windows Setup completes. Using 144dpi as an example, the registry entry that would need to be set and put in the setupcomplete.cmd is:

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontDPI]
"LogPixels"=dword:00000090

More information on the setupcomplete.cmd script can be found using the link below:

Add a Custom Script to Windows Setup
http://technet.microsoft.com/en-us/library/cc766314(WS.10).aspx