How to Force Windows Wallpapers to Change

There are a few configuration changes that I make on computers that need to be set in the Windows registry.

With having over 600 computers that I oversee, making sure certain settings are configured are needed.  Our System Admins do a good job at configuring most things – but there are other changes that I like to take on myself.

One of the things that is unique to us is the fact that we change our desktop wallpaper across all computers as needed.  Unfortunately, there have been many cases where users change their own wallpaper to something else they’ve downloaded from Internet Explorer.  Once the users change this to something else, we were unable to force the windows wallpapers to change on the computers.

Not until I did a bit more digging and research.  Now, whenever we have a new wallpaper that needs to go out, we force it to do so based upon a login script.

First of all, this procedure is a bit more complex than my previous posts.  In essence, a batch file was created that automatically runs when a user signs into the computer.  So, that means that the person can change their wallpaper after logging in and the wallpaper is forced to be what we want, but once they log off and back onto the computer, it reverts back to our company’s wallpaper.

The login script does three things – (1) it copies the wallpaper from a share on the server so we just update this one file and it is automatically deployed to all computers when they log on, (2) it updates the user’s registry settings that revert back to the required wallpaper location, and (3) immediately forces the update of the wallpaper.

Here is our login script:

copy /Y \\<SERVER>\<FOLDER>\wallpaper.bmp C:\Windows\wallpaper.bmp
regedit /s C:\<FOLDER>\UpdateWallpaper.reg
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters, 1, True

So just as previously described, the wallpaper bitmap file is copied from a server share to the local computer, the registry command is run to automatically import a registry file (showing that next), and then RUNDLL32.EXE is started which will force the changes to be updated immediately.

Alright – and now for the registry file.  It took many tweaks to get this right – but it finally is working.  The below registry file is imported every time someone logs into the PC – which then forces the Windows wallpaper to go back to what we want.  As in the login script above, this file is named “UpdateWallpaper.reg” and can be placed on the local computers – or even on the same server share.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Desktop]
“Wallpaper”=”C:\\Windows\\Wallpaper.bmp”
“WallpaperStyle”=”0”
“TileWallpaper”=”0”
“OriginalWallpaper”=”C:\\Windows\\Wallpaper.bmp”
“ConvertedWallpaper”=”C:\\Windows\\Wallpaper.bmp”
“ConvertedWallpaper Last WriteTime”=hex:00,d8,8a,68,59,f2,c8,01

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
“NoChangingWallpaper”=dword:00000001

And that is all!  Just ensure you set that login script somewhere (maybe on the same server share) and set the computers so that the script is run upon user login.  This will then force all computers to have a standardized background wallpaper in Windows.