2015-11-21 3 views
0

У меня есть .bat-файл, который вызывает стороннее приложение с некоторыми аргументами командной строки. Теперь мне нужно, чтобы это приложение выполнялось как admin. Я нашел возможность создать ярлык для .bat-файла, а затем установить его для запуска как admin, но тогда я не могу передать аргументы командной строки таким образом.Запуск .bat-файла как администратора при передаче аргументов

Я также нашел еще один вариант сделать это как скрипт .vbs, но мне нужно вызвать этот .vbs-файл из диалогового окна «Выполнить», а Run нужно вручную добавить расширение для файла .vbs.

Что делать в таком случае?

+3

[Как я могу автоматически поднять мой командный файл, чтобы он запрашивал у администратора права UAC, если это необходимо?] (Http://stackoverflow.com/a/28467343) - Я связал этот конкретный ответ. – wOxxOm

ответ

0

Посмотрите на этот код:

@ECHO OFF 
:: this tests if the file is running as admin 
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 
if '%errorlevel%' NEQ '0' (GOTO askAdmin) 
GOTO gotAdmin 
:askAdmin 
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges... 
goto UACPrompt 
) else (goto gotAdmin) 
:UACPrompt 
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 
"%temp%\getadmin.vbs" 
exit /B 
:gotAdmin 
if exist "%temp%\getadmin.vbs" (del "%temp%\getadmin.vbs") 
::from this point you can execute your command as admin 

Если положить, что в верхней части периодического файла он дает пользователю «выполнить в качестве администратора» быстрое и перезапускает текущий пакетный файл как администратор