środa,
PowerShell: Zmiana tapety
Zmiana tapety pulpitu dla określonego użytkownika za pomocą PowerShell nie jest trudna do wykonania. Prezentowany przykład można wykorzystać m.in. do zdalnego zmieniania tapety lub do ustawiania jej przy pomocy harmonogramu zadań. W Windows ustawienie tapety jest przechowywane w rejestrze, więc będziesz musiał zmodyfikować odpowiednią wartość rejestru dla danego użytkownika. Pamiętaj, że zmiana rejestru może być ryzykowna, więc należy robić to ostrożnie.
Aby zmienić tapetę pulpitu określonego użytkownika za pomocą PowerShell, musisz wykonać kilka kroków:
- wyszukać SID użytkownika na podstawie jego nazwy;
- zmienić wartość tapety w rejestrze dla tego użytkownika;
- zastosować zmiany bez konieczności restartowania systemu.
Przykładowy kod:
# Nazwa użytkownika, dla którego zmieniamy tapetę
$UserName = "NazwaUzytkownika"
# Znajdowanie SID użytkownika
$objUser = New-Object System.Security.Principal.NTAccount($UserName)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$UserSID = $strSID.Value
# Ścieżka do nowej tapety
$WallpaperPath = "C:\Path\To\New\Wallpaper.jpg"
# Ścieżka do klucza rejestru
$RegPath = "HKEY_USERS" + $UserSID + "Control PanelDesktop"
# Zmiana tapety w rejestrze
Set-ItemProperty -Path "Registry::$RegPath" -Name "Wallpaper" -Value $WallpaperPath
# Zastosowanie zmian
RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters ,1 ,True
Przed uruchomieniem tego skryptu, upewnij się, że:
- zastąpiłeś
"NazwaUzytkownika"
rzeczywistą nazwą użytkownika; - zastąpiłeś
"C:\Path\To\New\Wallpaper.jpg"
rzeczywistą ścieżką do pliku tapety.
Ten skrypt wymaga uprawnień administracyjnych do zmiany rejestru dla innego użytkownika. Ponadto funkcja UpdatePerUserSystemParameters
wywołana przez RUNDLL32
powinna zastosować zmiany bez konieczności restartowania systemu, ale jej skuteczność może zależeć od wersji Windows.