-
-
Save Maximus5/a7fb0a11b3c33e5d96b0 to your computer and use it in GitHub Desktop.
@echo off | |
echo Checking for permissions | |
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" | |
echo Permission check result: %errorlevel% | |
REM --> If error flag set, we do not have admin. | |
if '%errorlevel%' NEQ '0' ( | |
echo Requesting administrative privileges... | |
goto UACPrompt | |
) else ( goto gotAdmin ) | |
:UACPrompt | |
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" | |
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" | |
echo Running created temporary "%temp%\getadmin.vbs" | |
timeout /T 5 | |
"%temp%\getadmin.vbs" | |
exit /B | |
:gotAdmin | |
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) | |
pushd "%CD%" | |
CD /D "%~dp0" | |
echo Batch was successfully started with admin privileges | |
echo . | |
cmd |
Sure, it's possible. But much more complicated.
You have to run it elevated first, and after that start the script via task scheduler under system account.
Too much work I think.
In ConEmu you can do that easy BTW
Not working for me. It keeps looping and restarts after 5 sec are over been doing that now for 15 mins ))))): help
@Maximus5 Don't remember exactly why I asked you that. 😅 Maybe I needed to change some stubborn file permissions or something, and I ended up settling for nSudo. I know it's late, but I appreciate YOUR quick response. 🙏🏻
@MiggieNRG Maybe try turning the User Account Control notifications off, and see if it'll make a difference (just for debugging purposes, since I don't see why it wouldn't work otherwise.) I use the script every time I feel too lazy to right-click a file, and click "Run as administrator", and so far, it has never failed me. Hope this helps, Miguel.
General debugging tips:
Remove "echo off"
Add pause command in some places
Run and see the output
Another variant would be
@echo off
echo Checking for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
echo Permission check result: %errorlevel%
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
if exist "%SYSTEMROOT%\System32\Cscript.exe" ( goto VBS )
goto PS
:VBS
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
echo Running created temporary "%temp%\getadmin.vbs"
timeout /T 5
"%temp%\getadmin.vbs"
exit /B
:PS
REM timeout /T 5
powershell -Command "Start-Process -Verb RunAs -FilePath '%0' -ArgumentList 'am_admin'"
exit /b
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
echo Batch was successfully started with admin privileges
echo .
cmd
It becomes more modern with the following code
edit: some bugs fixed
@echo off
>nul 2>&1 fsutil dirty query %systemdrive% && (goto gotAdmin) || (goto UACPrompt)
:UACPrompt
if exist "%SYSTEMROOT%\System32\Cscript.exe" (
echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "%~s0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
cscript //nologo "%temp%\getadmin.vbs"
exit /b
) else (
powershell -Command "Start-Process -Verb RunAs -FilePath '%~s0'"
exit /b
)
:gotAdmin
if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs"
pushd "%CD%" && CD /D "%~dp0"
cls
cmd
Great job! Is it possible to make this run as the SYSTEM user instead?