Profilbild/Benutzerbild (UserAccountPicture) mit cmd kopieren/installieren
Verfasst: 27.09.2026, 13:02
Kurze Erklärung:
Hier geht es um eine unbeaufsichtigte bzw automatisierte Installation.
Es gibt genug Scripte für defaultuser/guest aber so gut wie keine
(mal abgesehen von Holgi
) für das eigene Profilbild (UserAccountPicture).
Zumindest bin ich im Netz nicht fündig geworden...
Hier ist meine Lösung mit 2 Scripte ohne "Bilderbasteln":
Dazu einmalig unter Windows das gewünschte Benutzerbild auswählen.
Egal welches Dateiformat oder Größe.
Das erste Script "get_files.cmd" sammelt die benötigten (versteckten!!!) 12 Bilder am Host.
Das zweite Script "user_picture.cmd" installiert dann die Bilder am Ziel System.
Vorteile:
Ich habe im Anhang ein ready-to-use Paket mit dem Deskmodder-Logo als Preset erstellt
Viel Spaß beim testen
Hier geht es um eine unbeaufsichtigte bzw automatisierte Installation.
Es gibt genug Scripte für defaultuser/guest aber so gut wie keine
(mal abgesehen von Holgi
Zumindest bin ich im Netz nicht fündig geworden...
Holgi hat geschrieben: 24.09.2026, 22:32 Wenn du eine Lösung hast, wäre es toll. Du könntest ja einen neuen Thread im Windows 11 Forum aufmachen.
Hier ist meine Lösung mit 2 Scripte ohne "Bilderbasteln":
Dazu einmalig unter Windows das gewünschte Benutzerbild auswählen.
Egal welches Dateiformat oder Größe.
Das erste Script "get_files.cmd" sammelt die benötigten (versteckten!!!) 12 Bilder am Host.
Code: Alles auswählen
@echo off
:: ---------------------------------------------
:: Lese aktuelle Benutzter SID aus
for /F "tokens=2" %%i in ('whoami /user /fo table /nh') do set user_sid=%%i
:: Aktuelle Benutzter SID: %user_sid%
:: Check ob alle Bilder zum importieren existieren
if not exist "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\UserImage.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image96.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image448.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image32.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image40.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image48.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image192.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image240.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image64.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image208.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image424.jpg" goto error
if not exist "%public%\AccountPictures\%user_sid%\*-Image1080.jpg" goto error
echo.
echo ---------------------------------------------
echo Alle Bilder zum importieren sind vorhanden
echo ---------------------------------------------
echo.
:: Abfrage zum überschreiben
if exist "%~dp0AccountPictures\*.jpg" (
echo -------------------ACHTUNG-------------------
echo Es sind bereits Bilder vorhanden
echo Sollen diese ersetzt werden?
echo JA - weiter mit beliebige Taste
echo NEIN - dieses Fenster schliessen
echo ---------------------------------------------
echo.
pause
)
:: Um nur eine Bild ID sicherzustellen
if exist "%~dp0AccountPicture\*.jpg" del "%~dp0AccountPicture\*.jpg" /a:h /q
if exist "%~dp0AccountPictures\*.jpg" del "%~dp0AccountPictures\*.jpg" /a:h /q
echo.
echo ---------------------------------------------
echo Starte Kopiervorgang
echo ---------------------------------------------
echo.
xcopy "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\UserImage.jpg" "%~dp0AccountPicture\" /h /i
xcopy "%public%\AccountPictures\%user_sid%\*.jpg" "%~dp0AccountPictures\" /h /i
:: Check ob alle Bilder kopiert wurden
if not exist "%~dp0AccountPicture\UserImage.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image96.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image448.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image32.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image40.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image48.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image192.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image240.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image64.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image208.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image424.jpg" goto no_copy
if not exist "%~dp0AccountPictures\*-Image1080.jpg" goto no_copy
echo.
echo -----------------FERTIG----------------------
echo Alle erforderlichen Bilder
echo wurden erfolgreich kopiert
echo Viel Spass damit %username%
echo ---------------------------------------------
echo.
pause
exit
:error
cls
color 0C
echo.
echo ------------------FEHLER---------------------
echo Die Benutzer Bilder existieren nicht
echo Bitte in Windows ein Benutzerbild aussuchen
echo ---------------------------------------------
echo.
pause
exit
:no_copy
cls
color 0C
echo.
echo ------------------FEHLER---------------------
echo Fehler beim kopieren der Bilder
echo ---------------------------------------------
echo.
pause
exitCode: Alles auswählen
::
:: Benutzerbild ändern (nicht default oder guest)
::
:: getestet mit Windows 11 26H2 26300.9539/26300.9550
:: getestet in der Windows Sandbox und Hyper-V Umgebung
:: getestet mit und ohne bestehenden Benutzerbild
:: funktioniert auch bei nicht aktiverten Windows
::
@echo off
:: Check, ob Admin-Rechte vorhanden sind
net session >nul 2>&1
if %errorLevel% == 0 (
goto start
) else (
if not exist %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe goto nops
powershell -Command "Start-Process '%~f0' -Verb RunAs"
exit /b
)
:start
:: Check ob alle Bilder zum exportieren vorhanden sind
if not exist "%~dp0AccountPicture\UserImage.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image96.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image448.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image32.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image40.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image48.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image192.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image240.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image64.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image208.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image424.jpg" goto no_files
if not exist "%~dp0AccountPictures\*-Image1080.jpg" goto no_files
echo.
echo ---------------------------------------------
echo Alle Bilder zum exportieren sind vorhanden
echo ---------------------------------------------
echo.
echo %username% hat Admin Rechte
:: Lese aktuelle Benutzter SID aus
for /F "tokens=2" %%i in ('whoami /user /fo table /nh') do set user_sid=%%i
:: Ergebnis ausgeben
echo SID %user_sid%
echo.
echo ---------------------------------------------
echo Bearbeite "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture"
echo ---------------------------------------------
echo.
:: Abfrage zum überschreiben wenn Benutzerbild am PC vorhanden
if exist "%public%\AccountPictures\%user_sid%\*.jpg" (
echo -------------------ACHTUNG-------------------
echo Es sind bereits Bilder am Ziel vorhanden
echo Sollen diese erstzt werden?
echo JA - weiter mit beliebige Taste
echo NEIN - dieses Fenster schliessen
echo ---------------------------------------------
echo.
pause
)
:: Die nächsten 2 Zeilen gelten für ein bereits vorhandenes Benutzerbild
if exist "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\UserImage.jpg" takeown /F "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture"
if exist "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\UserImage.jpg" icacls "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture" /grant %username%:F /T
:: Schreibe nur in die Registry wenn noch keine Benutzerbilder vorhanden waren
if not exist "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\UserImage.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\UserManager\Users\1044478" /v "Sid" /t REG_SZ /d "%user_sid%" /f
if not exist "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\UserImage.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\UserManager\Users\1044478" /v "SysManaged" /t REG_DWORD /d "1" /f
if not exist "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\UserImage.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\UserManager\Users\1044478" /v "UserTypeInternal" /t REG_DWORD /d "4" /f
if not exist "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\UserImage.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\UserManager\Users\1044478" /v "UserPicture" /t REG_SZ /d "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\UserImage.jpg" /f
xcopy "%~dp0AccountPicture\UserImage.jpg" "%userprofile%\AppData\Local\Microsoft\Windows\AccountPicture\" /h /i /y
echo.
echo ---------------------------------------------
echo Bearbeite "%public%\AccountPictures\%user_sid%"
echo ---------------------------------------------
:: Die nächsten 2 Zeilen gelten für ein bereits vorhandene Benutzerbilder
if exist "%public%\AccountPictures\%user_sid%\*.jpg" takeown /F "%public%\AccountPictures\%user_sid%\*.jpg"
if exist "%public%\AccountPictures\%user_sid%\*.jpg" icacls "%public%\AccountPictures\%user_sid%\*.jpg" /grant %username%:F /T
:: BildID der neuen (Quelle) und vorhandenen (Ziel) Bild Dateien auslesen
:: Schleife sucht nach versteckten .jpg-Dateien mit geschweiften Klammern
setlocal enabledelayedexpansion
for /f "tokens=2 delims={}" %%A in ('dir /a:h "%~dp0AccountPictures\*{*}*.jpg" 2^>nul') do (
set "quell_ID=%%A"
)
for /f "tokens=2 delims={}" %%A in ('dir /a:h "%public%\AccountPictures\%user_sid%\*{*}*.jpg" 2^>nul') do (
set "ziel_ID=%%A"
)
:: Ergebnis ausgeben
echo.
echo ---------------------------------------------
echo ID in der Quelle ist: %quell_id%
echo ID am Ziel System ist: %ziel_id%
echo ---------------------------------------------
echo.
:: Schreibe nur in die Registry wenn noch keine Benutzerbilder vorhanden waren
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image96.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image96" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image96.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image448.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image448" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image448.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image32.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image32" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image32.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image40.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image40" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image40.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image48.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image48" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image48.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image192.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image192" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image192.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image240.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image240" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image240.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image64.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image64" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image64.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image208.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image208" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image208.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image424.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image424" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image424.jpg" /f
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image1080.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "Image1080" /t REG_SZ /d "%public%\AccountPictures\%user_sid%\{%quell_id%}-Image1080.jpg" /f
:: keine Ahnung ob der folgende Eintrag notwendig ist
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}*.jpg" Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%user_sid%" /v "CorrelationID" /t REG_SZ /d "{AB61F918-7726-4520-8FB9-31B3B99DF792}" /f
:: kopiere Bilder ohne Änderung wenn noch keine Benutzerbilder vorhanden waren
if not exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}*.jpg" xcopy "%~dp0AccountPictures\*.jpg" "%public%\AccountPictures\%user_sid%\" /h /i
:: Wenn bereits Benutzerbilder am Host vorhanden waren:
:: Benenne Bilder vom Quell-Ordner um, damit bestehende Host Registry Einträge erhalten bleiben
:: Es werden sozusagen nur die Bilder mit dem gleichen Namen ausgetauscht
:: Mit ren wirds ohne Attribute ändern schwierig - deshalb der Umweg mit xcopy
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image96.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image96.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image96.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image448.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image448.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image448.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image32.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image32.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image32.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image40.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image40.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image40.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image48.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image48.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image48.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image192.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image192.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image192.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image240.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image240.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image240.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image64.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image64.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image64.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image208.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image208.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image208.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image424.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image424.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image424.jpg"/h /i /y
if exist "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image1080.jpg" xcopy "%~dp0AccountPictures\{%quell_id%}-Image1080.jpg" "%public%\AccountPictures\%user_sid%\{%ziel_id%}-Image1080.jpg"/h /i /y
echo.
echo -------------------ACHTUNG-------------------
echo ALLE Explorer Fenster werden geschlossen
echo um alle Aenderungen wirksam zu machen.
echo Fortfahren: Beliebige Taste
echo Abbrechen: Dieses Fenster schliessen
echo.
echo Alle erforderlichen Bilder wurden kopiert
echo Viel Spass damit %username%
echo ---------------------------------------------
echo.
pause
:: Um alle Änderungen wirksam zu machen entweder
:: Benutzer neu anmelden oder Explorer neu starten
taskkill /f /im explorer.exe >nul 2>&1
start explorer.exe
exit
:no_files
@echo off
cls
color 0C
echo.
echo -------------------FEHLER--------------------
echo Es fehlen die Bilder zum exportieren in
echo "%~dp0AccountPicture"
echo "%~dp0AccountPictures"
echo ---------------------------------------------
echo.
pause
exit
:nops
cls
color 0C
echo.
echo -------------------FEHLER--------------------
echo WindowsPowerShell ist nicht installiert -
echo Bitte Script mit Admin Rechten neu starten
echo ---------------------------------------------
echo.
pause
exit
- kein Bilderbasteln
- funktioniert in Hyper-V
- funktioniert in der Windows Sandbox
- funktioniert auch ohne aktivierten Windows
- ändert bereits bestehende Registry Einträge nicht
- auch bestehendes Benutzerbild kann geändert werden
- ist ohne Abmelden oder Neustart wirksam (nur Explorer Neustart)
- funktioniert auch ohne PowerShell oder VBS (bei extrem tiny Windows)
Ich habe im Anhang ein ready-to-use Paket mit dem Deskmodder-Logo als Preset erstellt
Viel Spaß beim testen