Monthly Archives: January 2013

Run a Program Elevated via the Right Click Menu – Run as Administrator

By definition, an HTML Application (HTA or HTAs) is a Microsoft Windows application which source code consists of HTML and one of scripting languages supported by Internet Explorer (VBScript or Jscript). The file extension of an HTA is .hta, and it is executed using the program mshta.exe. I personally like HTA because its graphical user interface enables me to overcome some of the limitations of the command window, and makes it easier to run my scripts. Unfortunately HTA does not automatically trigger a User Account Control, it doesn’t have the “Run as administrator” in the context menu, and there is no compatibility tab where it could be configured to run as administrator.
To adjust the context menu (for an HTA file) so that you can launch the application as administrator, there is a simple registry tweak that has been tested on Windows XP, Vista, Windows 7 and Windows 8.
The following registry script (CreateContextMenuForHTA.reg) creates this context menu for HTA files:

Windows Registry Editor Version 5.00
@=”HTML Application”
@=”C:\\WINDOWS\\system32\\mshta.exe \”%1\” %*”

In the case that a registry tweak would not be allowed as a solution, that you can run an HTA in elevated mode by using the following VBScript (RunHtaAsAdministrator.vbs) which assumes that you have a folder C:\MyHtaScripts where you keep your HTA files.

' Filename:    RunHtaAsAdmin.vbs
' Date:        Jan. 2013
' Author:      Alex Dujakovic
' Description: Run HTA file as administrator
' ************************************************************
strHTAfolder = "C:\MyHtaScripts"

Sub RunAsAdminSelectedHTA
  Set objShell = CreateObject("Shell.Application")
  Set objFolder = objShell.Namespace(strHTAfolder)
  Set objFolderItem = objFolder.ParseName(ChecUserInput())
  objFolderItem.InvokeVerb "runas"
End Sub
Function ChecUserInput
  strHtaAppName = InputBox("Enter the name of your HTA Application", "HTA Application - Run As Administrator")
  If(strHtaAppName) <> "" Then
    Set fso = CreateObject("Scripting.FileSystemObject")
      If fso.fileExists(strHTAfolder & "\" & strHtaAppName) Then
        ChecUserInput = strHtaAppName
        MsgBox "Typed name is incorrect, please try again."
      End If

  ElseIf(strHtaAppName) = vbNullString Then
    MsgBox "That is an incorrect entry, please try again"
  End If
End Function

Please note: Although the author has made every reasonable attempt to achieve complete accuracy of the content, he assumes no responsibility for errors or omissions. Also, you should use this information as you see fit, and at your own risk.