Health Scripts

Basic Health Check And Repair Systems That Automatically Elevate Without Needing Gsudo
git clone https://s.sonu.ch/~srket/Health Scripts.git
Log | Files | Refs

commit beba8d46376110156e34d7009240bf5a15f854f5
Author: srket <srket@sonu.ch>
Date:   Sun, 22 Aug 2021 13:29:40 +0300

Initial Commit

Diffstat:
AHealth Check.bat | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AHealth Fix.bat | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 113 insertions(+), 0 deletions(-)

diff --git a/Health Check.bat b/Health Check.bat @@ -0,0 +1,56 @@ + @echo off + CLS + ECHO ============================= + ECHO Running Admin shell + ECHO ============================= + +:init + setlocal DisableDelayedExpansion + set cmdInvoke=1 + set winSysFolder=System32 + set "batchPath=%~0" + for %%k in (%0) do set batchName=%%~nk + set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs" + setlocal EnableDelayedExpansion + +:checkPrivileges + NET FILE 1>NUL 2>NUL + if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) + +:getPrivileges + if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges) + ECHO. + ECHO ************************************** + ECHO Invoking UAC for Privilege Escalation + ECHO ************************************** + + ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%" + ECHO args = "ELEV " >> "%vbsGetPrivileges%" + ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%" + ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%" + ECHO Next >> "%vbsGetPrivileges%" + + if '%cmdInvoke%'=='1' goto InvokeCmd + + ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%" + goto ExecElevation + +:InvokeCmd + ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%" + ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%" + +:ExecElevation + "%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %* + exit /B + +:gotPrivileges + setlocal & cd /d %~dp0 + if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1) + + :::::::::::::::::::::::::::: + ::START + :::::::::::::::::::::::::::: + dism /online /cleanup-image /scanhealth + dism /online /cleanup-image /checkhealth + sfc /verifyonly +PAUSE+ \ No newline at end of file diff --git a/Health Fix.bat b/Health Fix.bat @@ -0,0 +1,55 @@ + @echo off + CLS + ECHO ============================= + ECHO Running Admin shell + ECHO ============================= + +:init + setlocal DisableDelayedExpansion + set cmdInvoke=1 + set winSysFolder=System32 + set "batchPath=%~0" + for %%k in (%0) do set batchName=%%~nk + set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs" + setlocal EnableDelayedExpansion + +:checkPrivileges + NET FILE 1>NUL 2>NUL + if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) + +:getPrivileges + if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges) + ECHO. + ECHO ************************************** + ECHO Invoking UAC for Privilege Escalation + ECHO ************************************** + + ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%" + ECHO args = "ELEV " >> "%vbsGetPrivileges%" + ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%" + ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%" + ECHO Next >> "%vbsGetPrivileges%" + + if '%cmdInvoke%'=='1' goto InvokeCmd + + ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%" + goto ExecElevation + +:InvokeCmd + ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%" + ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%" + +:ExecElevation + "%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %* + exit /B + +:gotPrivileges + setlocal & cd /d %~dp0 + if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1) + + :::::::::::::::::::::::::::: + ::START + :::::::::::::::::::::::::::: + dism /online /cleanup-image /restorehealth + sfc /scannow +PAUSE+ \ No newline at end of file