我正在尝试使用一个可以更改Windows 10默认壁纸的脚本,因为我将为所有客户端部署Win10。当我运行下面的批处理代码时,它不会更改默认墙纸。我看到img0文件位于正确的目录C:\ Windows \ Web \ Wallpaper \ Windows中,但它没有改变背景。下面的代码就是我正在使用的代码。尝试del C时,我确实收到了一些拒绝访问错误:\ Windows \ Web \ 4K \ Wallpaper \ Windows \ img0_1366x768.jpg访问被拒绝。
takeown /f c:\windows\WEB\wallpaper\Windows\img0.jpg
takeown /f C:\Windows\Web\4K\Wallpaper\Windows\*.*
icacls c:\windows\WEB\wallpaper\Windows\img0.jpg /Grant System:(F)
icacls C:\Windows\Web\4K\Wallpaper\Windows\*.* /Grant System:(F)
del c:\windows\WEB\wallpaper\Windows\img0.jpg
del /q C:\Windows\Web\4K\Wallpaper\Windows\*.*
copy %~dp0img0.jpg c:\windows\WEB\wallpaper\Windows\img0.jpg
copy %~dp04k\*.* C:\Windows\Web\4K\Wallpaper\Windows
任何想法我做错了什么? TIA
答案 0 :(得分:9)
使用Powershell更改壁纸。首先,创建一个这样的函数:
Function Set-WallPaper($Value)
{
Set-ItemProperty -path 'HKCU:\Control Panel\Desktop\' -name wallpaper -value $value
rundll32.exe user32.dll, UpdatePerUserSystemParameters
}
现在调用函数:
Set-WallPaper -value "path to wallpaper"
答案 1 :(得分:2)
我知道这已经得到了解答,但如果有人想在批处理文件中执行此操作,则icacls行需要使用/ reset而不是/ grant ...类似于:
takeown /f c:\windows\WEB\wallpaper\Windows\img0.jpg
icacls c:\windows\WEB\wallpaper\Windows\img0.jpg /reset
copy %~dp0img0.jpg c:\windows\WEB\wallpaper\Windows\img0.jpg
copy %~dp04k\*.* C:\Windows\Web\4K\Wallpaper\Windows
应该有效(只要它由管理帐户运行)。
答案 2 :(得分:0)
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys("^ ")
WshShell.SendKeys("+{F10}")
WshShell.SendKeys("N")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{ENTER}")