Windows 7 to officially support logon UI background customization

As you probably know, Windows 7 build 7057, a build recently leaked to the public, sports a new (yet ugly) login UI background. Delivering on the “more customizable” promise, Windows 7 now supports the ability to load images into the background of the login screen without the use of third-party software or manual hacks.

Before Logon UI Customization After Logon UI Customization
Figure 1 – Logon UI background image before and after customization.

Although this functionality was designed with OEMs in mind, it is pretty easy to turn on and off using regedit and some images lying around your hard drive.

First, a check is made to determine if the customization functionality is enabled or not. More precisely, a DWORD value named OEMBackground in the HKLMSoftwareMicrosoftWindowsCurrentVersionAuthenticationLogonUIBackground key is checked. Its data, of Boolean type, defines whether or not this behavior is turned on, i.e. 1 for enabled, 0 for disabled. This value may not exist by default, depending on your system.

Afterwards, if customization is enabled, the primary monitor’s screen height and width are retrieved via calls to GetSystemMetrics. These values are used in the computation of the screen width (w)/height (h) ratio. For example, my desktop resolution is 1920x1200. The ratio, computed by the division of w/h, is 1.6:1.

The result of this computation is looked up in an internal table that drives what image to load on disk. It appears resolutions higher than 1920x1200 will force the loading and zooming of an image of closest compatibility (i.e. same ratio, smaller image).

As this is an OEM feature images are derived from %windir%system32oobeinfobackgrounds. Like the registry value, this folder may not exist by default. The following files (sorted by width-to-height ratio) are supported in this folder:

  • backgroundDefault.jpg
  • background768x1280.jpg  (0.6)
  • background900x1440.jpg  (0.625)
  • background960x1280.jpg  (0.75)
  • background1024x1280.jpg (0.8)
  • background1280x1024.jpg (1.25)
  • background1024x768.jpg  (1.33-)
  • background1280x960.jpg  (1.33-)
  • background1600x1200.jpg (1.33-)
  • background1440x900.jpg  (1.6)
  • background1920x1200.jpg (1.6)
  • background1280x768.jpg  (1.66-)
  • background1360x768.jpg  (1.770833-)

NOTE: Images must be less than 256kb in size. Thanks for pushing me to investigate, Jay C.

The backgroundDefault.jpg image is loaded and stretched-to-fit when a resolution/ratio-specific background cannot be found. The other resolution/ratio-specific files are self-explanatory. If the background cannot be loaded (e.g. image physically too large, incorrect ratio, etc.), the default SKU-based image is loaded from imagesres.dll. You’ll see a Windows Server-themed grayish background in there, too, suggesting this functionality is not specific to client SKUs.

Curious Corner - The RDP client, used in the screenshots above, is simply something I put together in C#. The System Center Virtual Machine Manager client provided by Microsoft doesn’t offer the ability to control whether or not my keyboard was hooked when in windowed-mode therefore equating to an unacceptable level of suckage.