How to Automatically Elevate a Vbscript to Run it as Administrator?

With the introduction of User Account Control (UAC) in Windows Vista, you usually open an elevated Command Prompt in order to run batch files and scripts that need administrative privileges. Applications can make use of manifest files (using RequireAdministrator flag) to automatically run elevated. For scripts, there is a neat little trick using which you can auto-elevate it using ShellExecute “runas” parameter.

Thanks to Jim Barry for tipping me off about the using runas argument in the ShellExecute method of Shell.Application object. Using Jim’s suggestions, my original script was condensed down to a great deal. Use one of these methods to run VBScripts elevated.

Method 1

This re-launches the current VBScript as administrator (elevated) if the script has no command-line arguments passed. When re-launching the script as administrator, simply pass a bogus argument so that the script does not run in a cyclic loop.

If WScript.Arguments.length = 0 Then
   Set objShell = CreateObject("Shell.Application")
   'Pass a bogus argument, say [ uac]
   objShell.ShellExecute "wscript.exe", Chr(34) & _
      WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
   'Add your code here

End If

Method 2

This method uses a launcher script which runs the main VBScript elevated using the runas verb.

Set objShell = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
strPath = FSO.GetParentFolderName (WScript.ScriptFullName)
If FSO.FileExists(strPath & "\MAIN.VBS") Then
     objShell.ShellExecute "wscript.exe", _
        Chr(34) & strPath & "\MAIN.VBS" & Chr(34), "", "runas", 1
Else
     MsgBox "Script file MAIN.VBS not found"
End If

You’ll see see the UAC elevation dialog.



automatically elevate vbscript runas

automatically elevate vbscript runas

Once user clicks Continue to approve, the main script is launched as administrator.

Related Post: How to Automatically Elevate a Batch file to Run it as Administrator?

About the author

Ramesh Srinivasan is passionate about Microsoft technologies and has a vast experience in the ITeS industry — delivering support for Microsoft's consumer products. He has been a Microsoft Most Valuable Professional [MVP], for 10 years in a row from 2003 to 2012 for his contribution in various Windows support forums.

%d bloggers like this: