Mit CMD Desktophintergrund ändern?


10.05.2023, 17:48

Ich habe gerade gelesen das dass nur bis Windows 7 geht anscheinend, stimmt das und wenn ja geht es anders?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Mögliche Fehler 1.: das Bild wird nicht gefunden

Zum Beispiel Falsches Verzeichnis des Bildes: Heißt die Hintergrunddatei wirklich 1.bmp? Versuche mal die Datei in den Desktop zu legen im ein .jpg umzuwandeln und als Verzeichnis statt C://Users/....... %UserProfile%Desktop zu nehmen

2. Das Bild wird nicht geupdated: wenn du den Computer neu startest ( am besten mit einem eigenen PC versuchen, wo nicht alles mkt Neustart resettet wird) ist dann das gewünschte Bild eingestellt?

Administeator muss das Program eig nicht sein und es gibt nichts besonderes in der Comandausgabe

Ist das Hintergeundbild danach vlt nur schwarz, das würde für Fehler 1 sprechen

LennartSBR 
Fragesteller
 10.05.2023, 17:55

Danke, aber es liegt anscheinend daran, dass die funktionen es nur bis win7 gibt in windows 10 dann wohl nicht. Ich habe den Code aus einem anderem Forum kopiert und es hat geklappt. Aber nochmal danke :)

0
Erzesel  11.05.2023, 08:28
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters

...funktioniert nicht ab Win 8.

Ab win 10 hat sich die Auswertung der Regentage duch die Wallpaperengine geändert....

1
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters

...funktioniert unter Windows ab 8 nicht mehr. Zudem hat sich die "Mechanik der Wallpaperengine geändert. Das setzen des Hintergrunds via Registry funktioniert nicht mehr, da unter WIN 10 auch die Diashow existiert.

hier ein funktionierendes Script, welche Powershell und native Systemfunktionen nutzt um dem System mitzuteilen was es tun soll.

setWallpaper.cmd

@echo off
  rem Pfad zum Bild hier eintragen
set "Wallpaper=C:\Users\Erzesel Secure\Desktop\EE.png"
  rem  Wallpaperstyles win 10: Ausfüllen=10, Anpassen=6, Dehnen=2, Kachel=0, Zentriert=0, Strecken=22
set "WallpaperStyle=10"
  rem Kachel=1 sonst 0
set "TileWallpaper=0"
 rem die  folgenden 2 Zeilen sind optional
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v WallPaperStyle /t REG_SZ /d "%WallpaperStyle%" /f
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v TileWallPaper /t REG_SZ /d "%TileWallpaper%" /f
 rem einzelnes Hintergrundbild setzen
powershell "$FP=(gci '%Wallpaper%' -ea Sil).FullName;(Add-Type -m '[DllImport("""user32.dll""")] public static extern void SystemParametersInfo (int uA,int uP,string l,int fW);' -name SPI -pass)::SystemParametersInfo(0x14,0,$FP,3)"
pause

Da es sich bei Dir um einen Schulrechner handelt, könnte es durchaus sein, das es administrative Beschränkungen hinsichtlich der Verwendung von Powerschell gibt!

Hier noch der Powershellcode ausführlich, damit du weist wie die "eingedampfte" Kommandozeile real funktioniert.

$PicturePath="DeinWallpaper.jpg"
 #compiliere C#-Zugriff auf eine native SystemAPIFunktion (PInvoke)
 #https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfoa
$SPI = Add-Type -MemberDefinition '[DllImport("user32.dll")] public static extern int SystemParametersInfo (int uAction , int uParam , string lpvParam , int fuWinIni);' -Name SPI -PassThru
 #SystemParametersInfo(0x14..) braucht  einen absoluten Pfad!
 #versuche aus einem evtl. relativen Pfad/Dateinamen einen absoluten Pfad zu kreieren.
$FullPath = (gci $PicturePath -ea Silent).FullName
$SPI::SystemParametersInfo(0x14,0,$FullPath,0) >$Null

PS:

SystemParametersInfo(0x14..) gibt keinen Fehler zurück, wenn der Vorgang nicht erfolgreich war. (zB. das Bild nicht gefunden wurde oder ein unzulässiges Format hat) .Im Falle eines Fehlers erfolgt ein Fallback zur eingestellten Volltonfarbefarbe (in der Regel schwarz)

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren