DEV Community

Excalibra
Excalibra

Posted on

The method to run a BAT batch file with administrator privileges

This article mainly introduces methods to run batch scripts (BAT files) with administrator privileges. Those who need this information can refer to the following steps:


1. Method One

Some computers are logged in with non-administrator accounts and require a prompt to confirm administrator privileges when running programs. The solution is as follows:

@echo off
%1 %2
ver|find "5.">nul&&goto :Admin
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas",1)(window.close)&goto :eof
:Admin
:: Add the above command at the beginning of your BAT file.
:: Below are the commands you need to execute.
set path=%~dp0
echo Install MySQL service...
echo %path%
cd %path%\bin\
mysqld.exe --remove mysql
mysqld.exe --install mysql
echo Start MySQL service
"%SystemRoot%"\system32\net start mysql
Enter fullscreen mode Exit fullscreen mode

2. Granting Administrator Privileges to BAT Scripts

To ensure a BAT script runs with administrator privileges, add the following code at the top of your BAT file:

@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0" 
Enter fullscreen mode Exit fullscreen mode

3. Running Commands as Administrator in BAT Scripts

Add the following code at the beginning of your BAT file:

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
Enter fullscreen mode Exit fullscreen mode

  1. Automatically Running BAT Files as Administrator

In day-to-day operations, batch scripts (BAT files) are a simple and quick way to install or configure systems on Windows. However, batch scripts do not run as administrator by default.

To address this, you can name the script something like XXXXXX (Please right-click and run as administrator!).bat. However, some users may still ignore the prompt and run the script directly, causing it to fail due to insufficient privileges.

To solve this, you can use a workaround by creating a VBS script that ensures the BAT file is run with administrator privileges.

Here’s an example script:

@ECHO OFF 
setlocal EnableDelayedExpansion 
color 3e 
title Add Service Configuration   

PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof 
:runas

:: Add your own script here

echo Task completed, press any key to exit    
pause >nul 
exit
Enter fullscreen mode Exit fullscreen mode

5. Running BAT Files with Administrator Privileges

Simply add the following script at the beginning of your BAT file. When you double-click the file, it will automatically run with administrator privileges:

@echo off&color 17 
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0 
bcdedit >nul 
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin) 
:UACPrompt 
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit 
exit /B 
:UACAdmin 
cd /d "%~dp0" 
echo Current working path: %CD% 
echo Administrator privileges obtained
Enter fullscreen mode Exit fullscreen mode

6. Automatically Running BAT or CMD Scripts as Administrator

Some batch scripts require elevated privileges to execute commands effectively. To do so, add the following code at the beginning of your script:

@echo off 
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 
if '%errorlevel%' NEQ '0' ( 
    goto UACPrompt 
) else ( 
    goto gotAdmin 
) 
:UACPrompt 
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 
"%temp%\getadmin.vbs"
exit /B 
:gotAdmin 
if exist "%temp%\getadmin.vbs" ( 
    del "%temp%\getadmin.vbs" 
)
Enter fullscreen mode Exit fullscreen mode

7. Correct Method for Automatically Running CMD Scripts as Administrator

To handle paths with spaces, add the following code at the beginning of your script:

  • For scripts with no parameters:
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit 
Enter fullscreen mode Exit fullscreen mode
  • For scripts with one parameter:
%2 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" "^&chr(34)^&"%~1"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit 
Enter fullscreen mode Exit fullscreen mode

For additional parameters, follow the same logic.


8. Other Methods to Run BAT Files as Administrator

  1. Create a shortcut for the BAT file. Right-click the shortcut → Properties → Advanced → Tick "Run as Administrator".
  2. Convert the BAT file into an EXE using a BAT-to-EXE tool, then right-click the EXE → Properties → Compatibility → Tick "Run as Administrator".
  3. Open CMD as administrator and run the BAT file from the command prompt.

This concludes the methods for running batch scripts with administrator privileges.

Top comments (0)