Ответ 1
Я запускал пакетные файлы, уменьшая аутентификацию пользователя Windows (UAC). Это сработало для меня.
Как запустить командный файл из другого пакетного файла с правами администратора?
Я пробовал команду RUNAS, но для этого требуется пароль администратора.
Я ищу альтернативу для запуска пакетного файла, щелкнув правой кнопкой мыши на нем и работая как администратор. Я хочу автоматизировать его из другого пакетного файла.
Я запускал пакетные файлы, уменьшая аутентификацию пользователя Windows (UAC). Это сработало для меня.
В Windows 7:
Создайте ярлык для этого пакетного файла
Щелкните правой кнопкой мыши на этом ярлыке и выберите "Свойства"
Нажмите кнопку Advanced
, чтобы найти флажок для запуска с правами администратора
Проверьте снимок экрана ниже
Использование
runas /savecred /profile /user:Administrator whateveryouwanttorun.cmd
Он будет запрашивать пароль только в первый раз. Он не будет запрашивать пароль еще раз, если пароль не изменен и т.д.
Вы можете использовать PowerShell для запуска b.bat как администратора с a.bat
:
set mydir=%~dp0
Powershell -Command "& { Start-Process \"%mydir%b.bat\" -verb RunAs}"
Он предложит пользователю диалог подтверждения. Пользователь выбирает YES
, а затем b.bat
запускается как администратор.
Runas.exe здесь не работает. Вы можете использовать VBScript для вызова глагола оболочки "Запуск от имени администратора". Элементы Elevation Powertoys содержат пакетный файл, который позволяет вам вызывать команду повышенного уровня:
elevate
cmd.exe
Если вы пытаетесь вызвать приглашение Windows UAC (тот, который помещает весь экран в черный цвет и спрашивает, предоставите ли вы права администратора на следующую задачу), RUNAS - это не самый плавный способ сделать это, поскольку:
Вместо этого попробуйте скопировать и вставить следующий код, чтобы убедиться, что ваш командный файл работает с правами администратора:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo Requesting Admin access...
goto goUAC )
else goto goADMIN
:goUAC
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:goADMIN
pushd "%CD%"
CD /D "%~dp0"
rem --- FROM HERE PASTE YOUR ADMIN-ENABLED BATCH SCRIPT ---
echo Stopping some Microsoft Service...
net stop sqlserveragent
rem --- END OF BATCH ----
Это решение работает на 100% при настройках Windows 7, 8.1 и 10 с включенным UAC.
Следующая команда может быть сохранена в виде файла bat, заменив имя файла bat и может быть запущена в порядке, чтобы запустить bat script с отметкой высоты. Следующая команда применяется для Windows 7 64 бит.
"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" -windowstyle hidden -nologo -noprofile -executionpolicy bypass -command "start-process -verb 'runas' -filepath BATCHFILENAME.BAT
Вы можете использовать служебную программу командной строки elevate
(ссылка для скачивания https://drive.google.com/open?id=0Bz7qe_olclTwVGZLUklFMHNxQ00):
Это описание использования:
Usage: Elevate [-?|-wait|-k] prog [args]
-? - Shows this help
-wait - Waits until prog terminates
-k - Starts the the %COMSPEC% environment variable value and
executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog - The program to execute
args - Optional command line arguments to prog