Launch a bat file without a command window as administrator?

I've tried many solutions, but they didn't work, somehow.

I can currently launch a bat file without command window from a vbs but I don't know how to launch it as admin.

VBScript (So I can launch the batch file without a command window):

Set oShell = CreateObject ("Wscript.Shell") Dim strArgs strArgs = "cmd /c Start.bat" oShell.Run strArgs, 0, false

Batch (Start.bat):

Start /wait Application.exe Net stop ServiceNameGoesHere

How do I launch the batch file as administrator while still making it invisible?

2 Answers

You can use the ShellExecute method of the Windows Shell object instead, and use the runas operation.

Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "Start.bat", , , "runas", 0

This will request elevation and run Start.bat.

ShellExecute's arguments are (excerpted and summarized from the ShellExecute page on MSDN):

  • sFile [in] - String of the filename to perform the operation on
  • vArguments [in, optional] - String of arguments (command line arguments)
  • vDirectory [in, optional] - The fully qualified path of the directory that contains the file specified by sFile. If this parameter is not specified, the current working directory is used.
  • vOperation [in, optional] - The operation to be performed. If this parameter is not specified, the default operation is performed.
  • vShow [in, optional] - Initial window display recommendation. 0 for hidden.

If you absolutely have to use cmd /c to run the batch file, you'll need to specify the full path to it. The invocation would look something like this:

Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "cmd", "/c F:\ull\path\to\Start.bat", , "runas", 0
5

You can add this code to the top of the batch file and it will self request admin rights:

@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
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" set params = %*:"="" echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" exit /B
:gotAdmin pushd "%CD%" CD /D "%~dp0"
:-------------------------------------- <YOUR BATCH SCRIPT HERE>

From here:

5

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like