Windows 7 to officially support logon UI background customization

15 Mar
2009
347 Comments

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 HKLM\Software\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background 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 1920×1200. 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. Although I don’t have a large enough monitor to test, it appears resolutions higher than 1920×1200 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%\system32\oobe\info\backgrounds. 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.

347 Comments

Dave

@Anonymous: I’m sure we’d all switch to Linux if Windows wasn’t working for us. I’m sorry if you have a problem with Windows but most of us don’t and find Linux a pain to configure and use productively.


bdavis

This is very useful to get rid of the annoying image that is included. Thx! At least if I get an OEM PC with some annoying logo on the login screen I know how to remove it.


Bret

Thanks Rafael, this is an excellent tip. It works perfectly but you do have to pay close attention to the 256KB limit for the image.

@Anonymous: I’m with Dave on this one buddy, I never have issues with Windows itself. I occasionally have issues with poorly written programs or drivers running in Windows but that’s no different than Linux. Perhaps when the gaming and hardware (specifically peripherals) industries fully embrace Linux I will switch, or perhaps when I stop gaming on PCs.


LizzieB

Great tip, but instead of going into the registry, I prefer using the Group Policy Editor. You need to be an administrator to do it this way, but it’s less of chance of doing harm to the registry.

To access, type gpedit.msc in the Start menu search field (of just enter the words: group policy).

Select Computer Configuration > Administrative Templates > System > Logon > Always use custom logon background.
Select Enabled.
Click Apply.
Click Okay.


Andrea Moro

This post looks like interesting as well and offer a tool for change the Windows 7 login’s background.

http://weblogs.asp.net/lduveau/archive/2009/10/15/windows-7-logon-background-changer.aspx


Tom

Hi All!

I would like to implement the logon screen using group policy. The “Always use custom logon screen” policy is only available in WS2008R2 enviroment.
I ran in the same thing as Fred: copyed the files to %windir%system32\oobe\info\backgrounds with total commander, and didn’t worked. Copyed with explorer and worked instantly! Can Anyone tell me why is this? Is this some sort of ntfs hard link? Please help!!

Thanks

Tom


james

microsoft are no longer going to let you do that…


james

sorry for double post,… but you will have to use 3rd party software …. found here ……. http://tweaks.com/software/tweakslogon/


Chris

@TOM

Thanks so much – thought i was going mad.
TC doesn’t do the trick – it seems not even the directories get created in the right place as they dont show when using Explorer.
Created folders and images with Explorer instead – and voila.

Thanks again,
Chris


Jordan Sim

Hi, if any of use run a network of Windows 7 client machines with a Windows Server 2008 R2 server and would like to know how you can change all the machine logon backgrounds through the server insted of going round each one and doing it manually, email me and i will send you the method how to do it. jordansimm (@) sky . com its very easy to do once you get the hang of it.


Mustafa Kazemi

The size should be really less than what Rafael Mentiond, otherwise it won’t put your ass on fantasy of seeing a new wallpaper while logging in. The file extension, it can be any recognized extension that Windows Photo Viewer could read/open it. Even it Paint is not able to edit the file, this extension is supported to be a wallpaper for the logon screen.

Thanks be to Rafael for the guide. It really works.


P45

The 256kb size limit is ridiculous, especially when their defaultBackground.bmp is around 2MB.


Diesel

Anyone know if the location you save the backgrounds to can be changed from the default? I am doing this on a corporate system that I have admin rights to but for some reason it won’t let me add files to the directory. Even though I was able to create the info/backgrounds directories inside the \Windows\System32\oobe folder it won’t let me save a jpg to that backgrounds folder, it’s a permissions issue.


Thomas Simmons

I have a Government system using this feature. It appears that they completely removed the REG_DWORD altogether. i changed it to 1 on my PC but my laptop doesn’t have it at all. So maybe it’s on by default but the registry key disables it rather than the other way around. I don’t dare try to delete it though


Chris Barnes

Ok, I am getting stuck on the stupidest thing.

I made the registry change. I have a background1920x1200.jpg image I want to use. But when I try to copy the file to the %windir%/system32/oobe/ directory, Windows 7 barfs at me telling me I don’t have permissions.

So I goto the advanced options of that folder and try to reset the permissions. No love – all the options are grey’d out.


Wes Gann

For all of you with Permission Issues, it’s because you have to disable UAC(User Access Control). You can disable it long enough(requires a reboot) to put your image in the %system32%\oobe\info\backgrounds folder or leave it disabled all together. Personally I dislike UAC and disable it on all my machines although that is not recommended. Anyways, there are multiple ways to disable UAC but I’ll describe two of them:

1a. Click Start, Control Panel, User Accounts, Change User Access Control settings (it’s at the bottom). Go to step 2.

1b. Click Start, in the search box/run type “msconfig” without the quotes and press enter. Click on the Tools tab, click “Change UAC Settings”, then click the Launch button. Go to Step 2.

2. Move the bar on the left all the way down to Never Notify and press OK. You may be prompted if you’re sure you want to do this, just hit Yes. Reboot your computer. Now you modify the folder :)