Você pode usar o método ShellExecute do objeto do Windows , e use a operação runas
.
Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "Start.bat", , , "runas", 0
Isso solicitará elevação e será executado Start.bat
.
Os argumentos do ShellExecute são (extraídos e resumidos da página ShellExecute no MSDN):
- sFile [in] - String do nome do arquivo para executar a operação em
- vArguments [in, opcional] - Seqüência de argumentos (argumentos da linha de comando)
- vDirectory [in, opcional] - O caminho completo do diretório que contém o arquivo especificado por sFile. Se este parâmetro não for especificado, o diretório de trabalho atual será usado.
- vOperation [in, opcional] - A operação a ser executada. Se este parâmetro não for especificado, a operação padrão será executada.
- vShow [in, opcional] - Recomendação inicial de exibição da janela. 0 para oculto.
Se você precisar usar cmd /c
para executar o arquivo em lote, precisará especificar o caminho completo para ele. A invocação seria algo como isto:
Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "cmd", "/c F:\ull\path\to\Start.bat", , "runas", 0