目录
原因分析
当我们通过python设置桌面壁纸后,重启电脑会变回原来的壁纸。python的ctypes模块更改壁纸后并不会修改注册表的内容,所以我们在设置好壁纸之后需要将注册表中桌面壁纸的值也一并修改。
查看注册表
我们打开注册表,找到如下目录:
HKEY_CURRENT_USER\Control Panel\Desktop
点开之后找到 WallPaper,这个就是壁纸的关键参数。
通过代码修改注册表
我们接下来通过代码来实现更改注册表内容。
设置桌面壁纸
这是之前设置桌面壁纸的代码
ctypes.windll.user32.SystemParametersInfoW(20, 0, imgLink, 0)
修改注册表
然后我们在这段代码之后加上注册表修改的代码,使用win32con、win32api模块,需要安装pywin32.
Hkey = win32api.RegCreateKey(win32con.HKEY_CURRENT_USER, r'Control Panel\Desktop')
win32api.RegSetValueEx(Hkey, 'WallPaper', 0, win32con.REG_SZ, imgLink)
win32api.RegCloseKey(Hkey)
另外一种写法
还有一种写法是需要使用winreg模块.
Hkey = winreg.CreateKey(winreg.HKEY_CURRENT_USER, r'Control Panel\Desktop')
winreg.SetValueEx(Hkey, 'WallPaper', 0, winreg.REG_SZ, imgLink)
winreg.CloseKey(Hkey)
注意事项
上面代码中的imgLink是图片的绝对路径,也就是完整的路径,不能填写项目文件夹下的路径以及虚拟路径。