因此,我一直在尝试使用 vbs 文件来更改 Windows 10 上的桌面壁纸。该 vbs 文件包含:
dim shell
Set shell = WScript.CreateObject("WScript.Shell")
wallpaper = "C:\Users\mypc\Pictures\wallpaper.jpg"
shell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", wallpaper
shell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True
问题是它并不总是有效。我执行它大约 10 次,只有 1 次有效。vbs 不会抛出任何错误。奇怪的是,注册表项实际上更改为正确的壁纸,但更改并未反映在桌面背景中,就好像它们没有关联或某些东西“卡住了”。任何关于问题可能是什么或我如何调试它的想法都将不胜感激。
答案1
您将需要触发 Windows 检查注册表项的事件以查看应显示什么壁纸,因为它不会一直检查注册表。
可能有几种方法可以做到这一点,但我敢打赌,将壁纸属性更改为“平铺”,然后再恢复到之前的状态可能会做到这一点。
答案2
经过大量挖掘,我发现这个脚本。它使用 PowerShell 来工作。它也可以更改壁纸和其他与桌面自定义相关的东西,而且它总是有效的(至少是壁纸更改部分)。如果有人感兴趣,这就是你这样做的方法:执行以下命令来更改壁纸
PS> Set-OSCWallpaper [wallpaper path] Stretch
请注意,您可能需要为 PowerShell 脚本启用远程签名。您可以通过以管理员身份打开 PowerShell 并执行以下命令来实现此目的:
Set-ExecutionPolicy Unrestricted