To change windows desktop wallpaper what we normally do is right click on the desktop and go properties and so on. But we can do the same by editing registry key using reg command from command line. The command is given below.
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d wallpaper_path /f
For example to set the image E:\photos\image1.bmp as the wall paper we need to run the command as below.
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d E:\photos\image1.bmp /f
After editing the registry key we need to run the below command to make the change take effect immediately.
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
Note that this method works only for bmp images. If you have .jpg or .jpeg images you can’t set them as wallpaper from command line. You can use the Desktop settings UI to set a .jpg or .jpeg file as wallpaper.
This won't work for two reasons:
1) file needs to be a bmp
2) writing the registry doesn't cause the change to happen, you need to do something like:
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
as well
It also works for “.jpg” as well. I’ve tried it. I think the real problems that need to be fix is:
+ remove “/f” from the first command
+ add space after “dll” in the second command
Thanks for the comment..will modify the post with these steps..
Hello, it appears this command does not work for me, I honestly don't know why…the reason I want to do this is because my windows7 does not have the option to select an image as background when I right click and look at the pop up menu….Any help or suggestions will be appreciate. Thanks
I think you have n’t yet activated your windows copy. Just activate it, after that you can use this.
it dosent work for me toooooooooooooooooooooooooooooooooooooo
Try doing it from Control panel -> Appearance and personalization -> Personalization.
Were you trying to do this in RDP connection? Looks like desktop background can't be changed in remote desktop connections.
My windows7 does not even have this personalization option, siriosly. I am also not using any RDP connection…Any other suggestions? …Is my windows7 screwed up, not installed correctly/fully? Thanks!
you are using wiondows 7 starter! you cannot change backgound picture in windows 7 starter edition
Hello, I wonder why this update thing doesn’t work for me.
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
The wallpaper is changed in the registry (I checked through regedit.exe) and also in Personalization the new image seems to show up.
But I can’t get it to update immediately.
Thanks in advance.
Looks like the rundll update command is not working in Windows 7. It works in XP. I could not find any other command to make the wall paper changes take effect immediately. However a logoff and login would change the wallpaper.
add a space between dll, Up
rundll32.exe user32.dll, UpdatePerUserSystemParameters
Restarting the computer will fix it.
What worked for me is running this command multiple times in a row (like 6 times) and then it worked (notice the space after the comma):
rundll32.exe user32.dll, UpdatePerUserSystemParameters
Forgot to mention, I’m using Window 7 Pro and just locally no remote connections. I want to make this work in a batch script where some conditions are changed :)
You can, any command in command prompt will work in batch.
There is two more keys:
1) WallpaperStyle
2) TileWallpaper.
WallpaperStyle = 10 and TileWallpaper = 0 make walpaper filled
WallpaperStyle = 6 and TileWallpaper = 0 make walpaper fited
WallpaperStyle = 2 and TileWallpaper = 0 make walpaper stretched
WallpaperStyle = 0 and TileWallpaper = 0 make walpaper centered
WallpaperStyle = 0 and TileWallpaper = 1 make walpaper tiled
I just tried the command:
“reg add “HKEY_CURRENT_USER\Control Panel\Desktop” /v Wallpaper /t REG_SZ /d C:\Users\Louis\Desktop\test.bmp /f”
But only get the error:
“ERROR: Invalid key name.
Type “REG ADD /?” for usage.”
Change “HKEY_CURRENT_USER\Control Panel\Desktop”
To “HKCU\Control Panel\Desktop” (You may need to retype out the quotes.
Yea same
The /f” should not be part of the Quotes for the path to the file to be clearer put the /f before /d and path.
in your example;
reg add “HKEY_CURRENT_USER\Control Panel\Desktop” /v Wallpaper /t REG_SZ /f /d “C:\Users\Louis\Desktop\test.bmp”
Hello, I suppose you changed image1.jpg to image1.bmp in the example code after the anonymous comment in January 2011, but you have not made that change in the explanation above the code, it still says image1.jpg.
Thanks for this article anyway, when I searched for a how-to on this topic this was the result which best fitted what I wanted.
And thanks to Keby Zlima for the explanation on the other codes.
Best regards, Bram
Thank you. corrected the explanation.
Before I reached the note that says that the image should be .bmp I was already testing on .jpg which did work for me.
I used that code, it worked great. Once. Now it doesn’t do anything. Thoughts?
I’m trying to get this working for remote support jobs. My plan is to export the existing Desktop hive as a backup, set up my own wallpaper during the session and then, when I’m done, import the saved hive back into place.
Only problem is that (on Win10 at least), the Rundll32 command does nothing. Even after I’ve changed the wallpaper key, F5ing the desktop doesn’t show the new graphic even though it shows up in the registry in the exact same format as if I had edited it through the control panel.
Argh.
Im using this in a bat file but it won’t work: try reg add /?
It works , Thanks
Thank you so much, you saved me a lot of work to figure out how to make the wallpaper centered and automated.
Chris
It shows me “too many command-line parameters”
For some reason, this only seems to work 5% of the time… Is there any way to make it work “consistently”?
Here’s the code:
reg add “HKEY_CURRENT_USER\Control Panel\Desktop” /v Wallpaper /t REG_SZ /d %AppData%\Test_image.bmp /f
RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters
Note: I made it in a batch file, not directly into cmd, using it to create a program
This batch file solved it for me. It checks if it is before or after 20:00 o’clock. If past – sets night wallpaper if before – sets day wallpaper.
The problem was it sometimes did work at 1st attempt, sometimes after 5th attempt. So I figured it out that the “dll line” should be repeated at least 5 times – now the code works everytime :D
Add this batch script to your scheduler (at logon and at 20:01) and you will have automagic wallpaper changer based on the time of the day.
@echo off
setlocal enabledelayedexpansion
set “Wtime=!time:~0,2!”
if “!Wtime!” leq “20” reg add “HKEY_CURRENT_USER\Control Panel\Desktop” /v Wallpaper /t REG_SZ /d “D:\MEGA\Obrazy\Tapety Desktop\mojave_dynamic\mojave_dynamic_8.jpeg” /f & goto done
if “!Wtime!” geq “20” reg add “HKEY_CURRENT_USER\Control Panel\Desktop” /v Wallpaper /t REG_SZ /d “D:\MEGA\Obrazy\Tapety Desktop\mojave_dynamic\mojave_dynamic_15.jpeg” /f & goto done
:done
timeout /t 5 >nul
start “” /b RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters ,1 ,True
start “” /b RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters ,1 ,True
start “” /b RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters ,1 ,True
start “” /b RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters ,1 ,True
start “” /b RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters ,1 ,True
endlocal
Win7 Ultimate. What I need to do is not change it but rather *remove* the wallpaper and make it a solid color (black). Does anyone know what the command would be for that? Thanks!
i had some issue in my office i cant change …
it shows like “you can only import binary registry files from within the registry editor”
please help me…
reg add “HKEY_CURRENT_USER\Control Panel\Desktop” /v Wallpaper /t REG_SZ /d C:\Users\BRIAFS\Desktop\1.png /f
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
Powershell command WORKS
Remove the backdrop by going in to Ease of access centre, click Make the computer easier to see, then tick the box Remove background images. You can then change the background colour by going in to Control Panel, Personalisation, Windows Color, and select the Desktop colour
uhh, ive been trying and playing around with this. it hasnt been changing the wallpaper. do i need to restart my computer??
does not work for me on Windows 10, also tried other recommendations.
it don’t work for me when I do like this —-> reg add “HKEY_CURRENT_USER\Control Panel\Desktop” /v Wallpaper /t REG_SZ /d “C:\Users\Me Lol\Pictures\Wallpaper.png” /f
if you did this on the command Prompt, It don’t work on Windows 10
can’t work?
when restarting the computer just showing a black background.
it says it run successfully but the background never changed.
Tried on Win 11 with png works fine.