0
我有一個批處理腳本,可讓用戶將其背景從黑色更改爲白色或反之亦然。我遇到的問題是,腳本有時會立即做出更改,而有時用戶必須註銷並重新登錄才能更改背景。以下是我迄今爲止:Windows批處理命令使更改立即生效
@echo off
call :quiet
exit /b
:quiet
:: For comparison, using the black wallpaper registry value
set "black=C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Themes\MDCBackground_black.bmp"
:: Set reg query result to current
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKCU\Control Panel\Desktop" /v Wallpaper') DO SET current=%%B
:: For debugging purpose.
ECHO current=%current%
pause
if "%current%"=="%black%" (
call :MakeDayWallpaper>nul 2>&1
:: Make changes without requiring logoff
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
) else (
call :MakeNightWallpaper>nul 2>&1
:: Make changes without requiring logoff
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
)
EXIT /b
:MakeDayWallpaper
REG ADD "hkcu\control panel\desktop" /v wallpaper /t REG_SZ /d "" /f
REG ADD "hkcu\control panel\desktop" /v wallpaper /t REG_SZ /d "C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Themes\MDCBackground_white.bmp" /f
REG DELETE "hkcu\Software\Microsoft\Internet Explorer\Desktop\General" /v Wallpaper /f
REG ADD "hkcu\control panel\desktop" /v WallpaperStyle /t REG_SZ /d 2 /f
EXIT /b
:MakeNightWallpaper
REG ADD "hkcu\control panel\desktop" /v wallpaper /t REG_SZ /d "" /f
REG ADD "hkcu\control panel\desktop" /v wallpaper /t REG_SZ /d "C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Themes\MDCBackground_black.bmp" /f
REG DELETE "hkcu\Software\Microsoft\Internet Explorer\Desktop\General" /v Wallpaper /f
REG ADD "hkcu\control panel\desktop" /v WallpaperStyle /t REG_SZ /d 2 /f
EXIT /b
線RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
是允許即時變化的命令。當我查看shell時,我可以看到每次執行腳本時註冊表值都在變化,但是,儘管如此,有時在用戶註銷並登錄之後,背景纔會更改。
首款谷歌命中:http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/c730f15b-d4cc-4879-9498-70b7618822a0 –
@Hans帕桑特。感謝我看過那篇文章,但它沒有提供任何對批處理腳本的幫助。他們正在討論如何使用我沒有任何經驗的C#或Powershell。 –
你需要從這個鏈接拿走什麼,你並不是唯一注意到UpdatePerUserSystemParameters不再起作用的人。你不會找到一種魔法藥水來讓它再次起作用。解決方法很明確,也許你可以找到你組織中的其他人來幫助你。 –