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)