Manually refreshing Windows desktop wall paper

Every now and then, the windows box ends up with “No” wall paper; typically due to issues with certain poorly created Unreal Engine 2 / DirectX games >_>. Earlier today, someone asked me a rather stupid question that brought me to thinking, is rundll32 even documented?

In poking my nose around, i found out that (as expected) Windows XP stores the name of the wall paper as a path to the BMP file in the registry; more specifically a REG_SZ in the form of: HKCU/Control Panel/Desktop/Wallpaper. In theory I could write a program to manipulate that value: then hook it up to my wall paper changer in place of utilities like hsetroot, mauhuahaua! The problemo is that Winsucks only seems to read that value on log in/out. The solution?#—Google. Third party programs can change the wall paper in real time, so obviously there has to be a way of doing it (hey, Windows does…), and As far as I know, most such routines would be tucked away in the shell32 and user32 libraries some where; enter rundll32.

rundll32 user32.dll,UpdatePerUserSystemParameters

problem solved 😉