it-swarm.com.ru

Как кодировать BAT-файл, чтобы он всегда работал в режиме администратора?

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

"Example1Server.exe"

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

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

runas /user:Administrator invis.vbs Example1Server.exe
119
karikari

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

runas /user:Administrator Example1Server.exe
56
Kerrek SB

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

Инструкции по Windows 7

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

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

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

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

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

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

Screenshot

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

cd "%~dp0" 

или лучше 

pushd "%~dp0" 

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

323
Ed Greaves

Если вы можете использовать стороннюю утилиту, вот утилита командной строки 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
8
aphoria

Вы можете использовать команду nircmd.exe 's 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, и он работает

6
Dheeraj Bhaskar

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

runas /user:Administrator /savecred Example1Server.exe

5
Anynomous

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

5
xxedxx
go get github.com/mattn/Sudo

Затем

Sudo Example1Server.exe
2
mattn

Просто добавьте это в начало вашего файла 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.

1
Sire

Должно определенно работать, добавляя эти строки вверху вашего файла 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 )
0
xikandar hayyat

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

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

0
Samiamias