Как кодировать BAT-файл, чтобы он всегда работал в режиме администратора? - PullRequest
129 голосов
/ 25 июля 2011

У меня есть эта строка внутри моего BAT-файла:

"Example1Server.exe"

Я хотел бы выполнить это в режиме администратора. Как изменить код летучей мыши, чтобы запустить его от имени администратора?

Это правильно? Нужно ли ставить цитаты?

runas /user:Administrator invis.vbs Example1Server.exe

Ответы [ 10 ]

334 голосов
/ 11 декабря 2012

Другой ответ требует ввода пароля учетной записи администратора. Кроме того, запуск под учетной записью в группе администраторов отличается от запуска от имени администратора , см .: UAC в Википедии

Инструкции для Windows 7

Для запуска с правами администратора создайте ярлык для командного файла.

  1. Щелкните правой кнопкой мыши на командном файле и выберите "Копировать"
  2. Перейдите туда, где вы хотите ярлык
  3. Щелкните правой кнопкой мыши на фоне каталога
  4. Выбрать Вставить ярлык

Затем вы можете установить ярлык для запуска от имени администратора:

  1. Щелкните правой кнопкой мыши по ярлыку
  2. Выберите Свойства
  3. На вкладке «Ярлыки» нажмите «Дополнительно»
  4. Установите флажок «Запуск от имени администратора»
  5. Нажмите ОК, ОК

Теперь, когда вы дважды щелкнете по ярлыку, он запросит подтверждение UAC, а затем Запуск от имени администратора (что, как я уже говорил выше, отличается от запуска под учетной записью в группе администраторов)

Проверьте скриншот ниже

Screenshot

Примечание: Когда вы делаете это для запуска от имени администратора, текущий каталог (путь) не будет таким же, как файл bat. Это может вызвать некоторые проблемы во многих случаях, когда файл bat ссылается на относительные файлы рядом с ним. Например, в моей Windows 7 текущая директория будет SYSTEM32 вместо расположения файла bat! Чтобы обойти это , вы должны использовать

cd "%~dp0"

или лучше

pushd "%~dp0"

, чтобы гарантировать, что cur dir находится на том же пути, где находится файл bat.

63 голосов
/ 25 июля 2011

Вы используете runas для запуска программы от имени определенного пользователя:

runas /user:Administrator Example1Server.exe
7 голосов
/ 17 марта 2013

Если вы можете использовать стороннюю утилиту, - это утилита командной строки elevate .

Это описание использования:

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
6 голосов
/ 26 сентября 2018

Просто добавьте это в начало вашего файла bat:

set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || (  echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )

Это повысит до администратора, а также останется в правильном каталоге. Протестировано на Windows 10.

5 голосов
/ 16 мая 2017

Вы можете использовать nircmd.exe * elevate команда

Справочник по командам NirCmd - elevate

elevate [Program] {Command-Line Parameters}

Только для Windows Vista / 7/2008: Запустите программу с правами администратора.Когда [Программа] содержит один или несколько пробелов, вы должны заключить его в кавычки.

Примеры:

elevate notepad.exe 
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS 
elevate "c:\program files\my software\abc.exe"

PS: я использую его на win 10, и он работает

4 голосов
/ 29 июля 2017

Я думаю, у меня есть решение проблемы с паролем.Этот единственный аргумент действительно удивителен.Он запрашивает пароль один раз, а затем никогда не запрашивает его снова.Даже если вы поместите его в другую программу, он не будет запрашивать пароль.Вот оно:

runas /user:Administrator /savecred Example1Server.exe

4 голосов
/ 05 апреля 2013

конвертируйте ваш пакетный файл в .exe с помощью этого инструмента: http://www.battoexeconverter.com/, затем вы можете запустить его как администратор

2 голосов
/ 30 июня 2017
go get github.com/mattn/sudo

Тогда

sudo Example1Server.exe
0 голосов
/ 29 мая 2019
  1. Мои эксперименты показывают, что команда runas должна включать домен администратора (по крайней мере, в настройках среды моей организации):

    runas /user:AdminDomain\AdminUserName ExampleScript.bat
    
  2. Ответы, предоставленные как Kerrek SB , так и Эд Гривз выполнит целевой файл под учетной записью администратора, но, если целевой сценарий является файлом «.bat»на самом деле они не обновляют команды в сценарии, чтобы иметь права администратора уровня администратора, по крайней мере при попытке сделать такие вещи, как добавление или изменение разделов реестра, которые в противном случае заблокированы групповой политикой.

    Кто-нибудь знает, как на самом деле обновить команды bat-файла (CMD) до прав администратора?

0 голосов
/ 09 декабря 2018

Используйте полный физический диск \ путь к пакетному файлу Target в свойствах ярлыка.

Это не работает в Windows 10, если вы используете дополнительные диски, как я пытался сделать вначале ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...