DEV Community

Excalibra
Excalibra

Posted on

1

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.

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay