Browse Source

Add profile-img.bat

master 1.0.0
LoganDark 2 years ago
parent
commit
3a42a2330e
1 changed files with 141 additions and 0 deletions
  1. +141
    -0
      profile-img.bat

+ 141
- 0
profile-img.bat View File

@ -0,0 +1,141 @@
@echo off
rem Created for Windows 10 AME, tested on version 20H2
rem Author: Logan Darklock <logandarklock@gmail.com> (no spam please)
rem Co-author: lucid
cls
echo :: Windows 10 AME User Icon Changer
echo.
echo Working...
echo.
setlocal
set SCRIPT=%0
set IMAGE=%1
set SID=%2
if "%IMAGE%" == "" (
cls
echo :: Windows 10 AME User Icon Changer
echo.
echo To change the user icon, drag-and-drop
echo an image file onto the script icon.
goto pause
)
rem Verify image extension, per lucid's request
set NAME=%IMAGE:"=%
rem Convert to lowercase
set NAME=%NAME:A=a%
set NAME=%NAME:B=b%
set NAME=%NAME:C=c%
set NAME=%NAME:D=d%
set NAME=%NAME:E=e%
set NAME=%NAME:F=f%
set NAME=%NAME:G=g%
set NAME=%NAME:H=h%
set NAME=%NAME:I=i%
set NAME=%NAME:J=j%
set NAME=%NAME:K=k%
set NAME=%NAME:L=l%
set NAME=%NAME:M=m%
set NAME=%NAME:N=n%
set NAME=%NAME:O=o%
set NAME=%NAME:P=p%
set NAME=%NAME:Q=q%
set NAME=%NAME:R=r%
set NAME=%NAME:S=s%
set NAME=%NAME:T=t%
set NAME=%NAME:U=u%
set NAME=%NAME:V=v%
set NAME=%NAME:W=w%
set NAME=%NAME:X=x%
set NAME=%NAME:Y=y%
set NAME=%NAME:Z=z%
if "%NAME:~-4%" == ".jpg" (goto validextension)
if "%NAME:~-5%" == ".jpeg" (goto validextension)
if "%NAME:~-4%" == ".png" (goto validextension)
if "%NAME:~-4%" == ".gif" (goto validextension)
if "%NAME:~-4%" == ".bmp" (goto validextension)
cls
echo :: Windows 10 AME User Icon Changer
echo.
echo Invalid image format!
echo.
echo Supported image formats: .jpg, .jpeg, .png, .gif, .bmp
goto pause
:validextension
if "%SID%" == "" (
rem When this script is elevated to admin permissions we keep track of the
rem SID of the user whose icon is being changed. This is passed as a third
rem argument so we can target registry changes and resized pictures to the
rem correct folder.
for /f "skip=1" %%w in ('"wmic path win32_useraccount where name='%USERNAME%' get sid"') do (
set SID=%%w
goto sidend
)
)
:sidend
timeout /t 1 /nobreak > NUL
openfiles > NUL 2>&1
if not %errorlevel% == 0 (
cls
echo :: Windows 10 AME User Icon Changer
echo.
echo Elevating to administrator...
powershell "Start-Process """%SCRIPT:"=`"""%""" -ArgumentList """%IMAGE:"=`"""% %SID:"=`"""%""" -Verb RunAs"
goto end
)
rem On recent Windows 10 versions, resolutions called for are:
rem 32x32, 40x40, 48x48, 64x64, 96x96, 192x192, 208x208, 240x240, 424x424,
rem 448x448, 1080x1080
rem This is ridiculous and I don't know why it can't be resized dynamically by
rem Windows, but sure
set FOLDER=%PUBLIC%\AccountPictures\%SID%
md "%FOLDER%" >nul 2>&1
takeown /r /d Y /f "%FOLDER%" >nul
icacls "%FOLDER%" /reset /t >nul
del /q /f "%FOLDER%\*" > nul
rem Set word wrap to 80 columns and this will become readable. I'm so sorry...
powershell "Add-Type -AssemblyName System.Drawing; $img = [System.Drawing.Image]::FromFile((Get-Item """%IMAGE:"=`"""%""")); $a = New-Object System.Drawing.Bitmap(32, 32); $graph = [System.Drawing.Graphics]::FromImage($a); $graph.DrawImage($img, 0, 0, 32, 32); $a.Save("""%FOLDER:"=`"""%\32x32.png"""); $b = New-Object System.Drawing.Bitmap(40, 40); $graph = [System.Drawing.Graphics]::FromImage($b); $graph.DrawImage($img, 0, 0, 40, 40); $b.Save("""%FOLDER:"=`"""%\40x40.png"""); $c = New-Object System.Drawing.Bitmap(48, 48); $graph = [System.Drawing.Graphics]::FromImage($c); $graph.DrawImage($img, 0, 0, 48, 48); $c.Save("""%FOLDER:"=`"""%\48x48.png"""); $d = New-Object System.Drawing.Bitmap(64, 64); $graph = [System.Drawing.Graphics]::FromImage($d); $graph.DrawImage($img, 0, 0, 64, 64); $d.Save("""%FOLDER:"=`"""%\64x64.png"""); $e = New-Object System.Drawing.Bitmap(96, 96); $graph = [System.Drawing.Graphics]::FromImage($e); $graph.DrawImage($img, 0, 0, 96, 96); $e.Save("""%FOLDER:"=`"""%\96x96.png"""); $f = New-Object System.Drawing.Bitmap(192, 192); $graph = [System.Drawing.Graphics]::FromImage($f); $graph.DrawImage($img, 0, 0, 192, 192); $f.Save("""%FOLDER:"=`"""%\192x192.png"""); $g = New-Object System.Drawing.Bitmap(208, 208); $graph = [System.Drawing.Graphics]::FromImage($g); $graph.DrawImage($img, 0, 0, 208, 208); $g.Save("""%FOLDER:"=`"""%\208x208.png"""); $h = New-Object System.Drawing.Bitmap(240, 240); $graph = [System.Drawing.Graphics]::FromImage($h); $graph.DrawImage($img, 0, 0, 240, 240); $h.Save("""%FOLDER:"=`"""%\240x240.png"""); $i = New-Object System.Drawing.Bitmap(424, 424); $graph = [System.Drawing.Graphics]::FromImage($i); $graph.DrawImage($img, 0, 0, 424, 424); $i.Save("""%FOLDER:"=`"""%\424x424.png"""); $j = New-Object System.Drawing.Bitmap(448, 448); $graph = [System.Drawing.Graphics]::FromImage($j); $graph.DrawImage($img, 0, 0, 448, 448); $j.Save("""%FOLDER:"=`"""%\448x448.png"""); $k = New-Object System.Drawing.Bitmap(1080, 1080); $graph = [System.Drawing.Graphics]::FromImage($k); $graph.DrawImage($img, 0, 0, 1080, 1080); $k.Save("""%FOLDER:"=`"""%\1080x1080.png"""); "
set KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%SID%
reg add "%KEY%" /v Image32 /t REG_SZ /d "%FOLDER%\32x32.png" /f >nul
reg add "%KEY%" /v Image40 /t REG_SZ /d "%FOLDER%\40x40.png" /f >nul
reg add "%KEY%" /v Image48 /t REG_SZ /d "%FOLDER%\48x48.png" /f >nul
reg add "%KEY%" /v Image64 /t REG_SZ /d "%FOLDER%\64x64.png" /f >nul
reg add "%KEY%" /v Image96 /t REG_SZ /d "%FOLDER%\96x96.png" /f >nul
reg add "%KEY%" /v Image192 /t REG_SZ /d "%FOLDER%\192x192.png" /f >nul
reg add "%KEY%" /v Image208 /t REG_SZ /d "%FOLDER%\208x208.png" /f >nul
reg add "%KEY%" /v Image240 /t REG_SZ /d "%FOLDER%\240x240.png" /f >nul
reg add "%KEY%" /v Image424 /t REG_SZ /d "%FOLDER%\424x424.png" /f >nul
reg add "%KEY%" /v Image448 /t REG_SZ /d "%FOLDER%\448x448.png" /f >nul
reg add "%KEY%" /v Image1080 /t REG_SZ /d "%FOLDER%\1080x1080.png" /f >nul
gpupdate /force >nul
cls
echo :: Windows 10 AME User Icon Changer
echo.
echo User icon successfully changed! You may have to reboot
echo for it to fully take effect.
:pause
echo.
pause
:end

Loading…
Cancel
Save