Как запустить VBScript в повышенном режиме (запуск от имени администратора)

С введением контроля учетных записей (UAC) в Windows Vista вы обычно открываете командную строку с повышенными правами, чтобы запускать пакетные файлы и сценарии, которым требуются права администратора. Приложения могут использовать файлы манифеста (используя флаг RequireAdministrator) для автоматического запуска с повышенными правами.

В отношении сценариев в этой статье приводятся некоторые изящные маленькие хитрости, которые вы можете автоматически повышать с помощью параметра ShellExecute «runas».

(Смотрите также Как автоматически поднять пакетный файл, чтобы запустить его от имени администратора? для другого метода авто-возвышения.)

Запустить VBScript повышенных

Спасибо Джиму Барри за сообщение об использовании беги как аргумент в методе ShellExecute объекта Shell.Application. Используя предложения Джима, мой оригинальный сценарий был сжат до значительной степени. Используйте один из этих методов для запуска VBScripts с повышенными правами.

Способ 1

Вот пример сценария, который перезапускает себя как администратор (с повышенными правами), используя беги как параметр, если в сценарии не переданы аргументы командной строки. При повторном запуске скрипта от имени администратора просто передайте фиктивный аргумент, чтобы скрипт не работал в циклическом цикле.

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

Способ 2

Этот метод использует скрипт запуска, который запускает основной VBScript с повышенными правами, используя беги как глагол.

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

Вы увидите диалоговое окно повышения UAC.

автоматически поднять VBScript Runas

Когда пользователь нажимает кнопку «Продолжить», основной сценарий запускается от имени администратора.

СВЯЗАННЫЙ: Как автоматически поднять пакетный файл, чтобы запустить его от имени администратора?

Ссылка на основную публикацию