Screen resolution can be changed from a running WinPE booted on BIOS firmware. Changing the screen resolution on UEFI firmware is not so simple. Settings in unattend.xml appear to be ignored and the screen resolution is fixed. Based on available information screen resolution appears to be set based on Graphics Output Protocal (GOP) mode. Once WinPE is booted, the resolution cannot be changed.
Investigating further, the screen resolution in WinPE is set to the resolution defined/set by the Windows Boot Manager. bcdedit.exe can be used to modify the BCD store and set the menu resolution that will subsequently by used in WinPE, however the graphicsresolution element does not support many options. Examples of resolutions that can be set using graphicsresolution include -
bcdedit.exe /set {globalsettings} graphicsresolution 800x600 bcdedit.exe /set {globalsettings} graphicsresolution 1024x600 bcdedit.exe /set {globalsettings} graphicsresolution 1024x768Attempting to use an unsupported resolution (unsupported by bcdedit - not the hardware) resulted in the following output -
C:\windows\system32>bcdedit.exe /set {globalsettings} graphicsresolution 1920x1080 The integer data is not valid as specified. Run "bcdedit /?" for command line assistance. The parameter is incorrect.The highestmode option is also supported in bcdedit.exe. This option will enable boot applications to use the highest graphical mode detected by the firmware -
bcdedit.exe /set {globalsettings} highestmode onExercise caution when using higestmode, as depending on the scale used on WinPE (see below) WinPE may be unusable on high resolution displays. As an example, running WinPE with 100% scaling on a Surface Pro with a screen size of 12.3" and maximum resolution of 2736 x 1824 was unreadable due to the content being hard to see and UI targets being difficult to select.
The GRUB4EFI boot manager (aka Grub4dos-for_UEFI) can be used to set a wider range of screen resolutions before control is passed to the Windows Boot Manager. Setting the screen resolution in a GRUB4EFI menu or at the commandline and then chainloading the Windows Boot Manager should keep the resolution set in GRUB4EFI. NOTE that this may not work if the screen resolution is configured in the BCD store (e.g. graphicsresolution or highestmode is set) as these settings will override GRUB4EFI.
To find supported resolutions, use the graphicsmode --info command on the GRUB4EFI commandline. On the test system, the following resolutions are supported -
MODE Format Resolution BitPixel 260 1 1280 x 1024 32 259 1 1024 x 768 32 258 1 800 x 600 32 257 1 640 x 480 32 256 1 1920 x 1080 32WinPE does not support resolutions lower than 768 vertical lines. This limits supported resolutions on the T470s test system to the following -
1024 x 768 1280 x 1024 1920 x 1080GRUB4EFI configuration file (menu.lst) menu entries. Each entry uses the graphicsmode command to set a supported screen resolution prior to chainloading the Windows boot manager (/efi/microsoft/boot/bootmgfw.efi) -
color white/black black/white light-blue/black light-red/black default 4 title Windows 1024x768 find --set-root /efi/microsoft/boot/bootmgfw.efi graphicsmode -1 1024 768 chainloader /efi/microsoft/boot/bootmgfw.efi title Windows 1280x1024 find --set-root /efi/microsoft/boot/bootmgfw.efi graphicsmode -1 1280 1024 chainloader /efi/microsoft/boot/bootmgfw.efi title Windows 1920x1080 find --set-root /efi/microsoft/boot/bootmgfw.efi graphicsmode -1 1920 1080 chainloader /efi/microsoft/boot/bootmgfw.efi title commandline commandline title reboot reboot

misty