Запуск от имени администратора windows 10 bat

Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

1

Запуск скрипта с повышенными привилегиями [руководство]

20.10.2012, 17:40. Показов 490832. Ответов 74


Студворк — интернет-сервис помощи студентам

Как запустить Batch-файл от имени Администратора (с повышенными правами).

Вариант 1) Правая кнопка мыши по Batch-файлу «Запуск от имени администратора».

Запуск скрипта с повышенными привилегиями [руководство]

Вариант 2) Сначала запустить командную строку (см. ниже), а в ней запустить на исполнение Batch-файл.



2



Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

20.10.2012, 17:40

 [ТС]

2

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

Способ 1:

Пуск
В окно поиска ввести CMD
Нажать Ctrl + Shift + Enter.

Способ 2:

Войти в диспетчер задач (Ctrl + Shift + Esc)
Вкладка «Процессы», кнопка «Отображать процессы всех пользователей».
Файл, Ctrl + Клик ЛКМ (левая кнопка мыши) по пункту «Новая задача (Выполнить …)».

Способ 3. Запуск Batch-файла с повышенными правами:

1. Создайте Batch-файл.

2. Создайте ярлык к этому файлу.

3. Зайдите в свойства ярлыка, выберите вкладку «Ярлык», кнопка «Дополнительно», отметьте галкой «Запускать от имени администратора».

Ярлык для запуска с запросом элевации прав готов.

См. также другие способы в статьях от Вадима Стеркина:
Как открыть командную строку от имени администратора в нужной папке

  • Открытие командной строки с правами администратора в нужной папке
  • Добавление соответствующего пункта контекстного меню с помощью установщика CmdHereAsAdmin.inf (программа PowerToy).
  • Рассматриваются Windows 7 и 8.

Как открывать файлы из контекстного меню с полными правами

  • Как открывать файлы из контекстного меню с полными правами
  • Повышение прав из раздела реестра “runas”
  • Повышение прав сторонними средствами
  • Тонкости, которые нужно учитывать, при работе с UAC
  • Практика: создание архива с полными правами из контекстного меню

Так ли страшен контроль учетных записей?

  • С какими правами работать?
  • Назначение контроля учетных записей
  • Администратор или пользователь?
  • Повышение прав с запросом UAC и без него
  • Современные программы и старые приложения
  • Виртуализация файлов и реестра
  • Использование сторонних утилит для повышения прав
  • Запуск программ без запроса UAC



3



Dragokas

Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

30.12.2012, 03:49

 [ТС]

3

Лучший ответ Сообщение было отмечено как решение

Решение

Элевация прав запуска BAT-файла (отображается диалог контроля учетных записей UAC)
Код: Dragokas

В ОС Windows Vista/7/8… запись в системные папки (такие как Windows, System32, корень диска C: ), запись в реестр (например, в улей HKLM) требует прав администратора.

Чтобы автоматически запускать батник с затребованием повышенных привилегий,
Вы можете воспользоваться одним из способов:

1) Через JScript-вставку без создания вспомогательного файла:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@set @x=0; /*
@echo off
ver |>NUL find /v "5." && if "%~1"=="" cscript.exe //nologo //e:jscript "%~f0"& exit /b
 
 
::
:: <--- Здесь код Вашей основной программы
::
 
 
pause
exit /B
 
:: Эту строку не трогать. Ниже ничего не писать!!!
*/new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);

Из минусов обоих способов: батнику нельзя передавать аргументы запуска.

2) С использованием внешнего VBScript-сценария.

Приведенный пример создает временный VBS-скрипт, через который методом ShellExecute, verb — runas запускает повторно BAT-файл с повышенными правами.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
ver |>NUL find /v "5." && if "%~1"=="" (
  Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"1","","runas",1 >"%~dp0Elevating.vbs"
  cscript.exe //nologo "%~dp0Elevating.vbs" "%~f0"& goto :eof
)
 
 
::
:: <--- Здесь код Вашей основной программы
::
 
 
pause

Комментарий к коду

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@echo off
 
:: Проверяем пустой ли первый аргумент
:: Это нужно, чтобы не запустить процесс элевации дважды.
:: Аргумент становится = 1, когда запускается команда [URL="http://ss64.com/vb/shellexecute.html"]ShellExecute[/URL]
 Имя скрипта, Аргумент, Рабочий каталог,Глагол,Режим отображения окна
if "%~1"=="" (
:: Сохраняем скрипт в файл Elevating.vbs, который находится в папке %~dp0, т.е. рядом с батником
::Параметры такие: 
::Имя скрипта - передано аргументом из cscript.exe (см.строку кода ниже)
::Аргументы: 1 - аргумент для бат-файла, чтобы не запустить элевацию дважды
::Рабочий каталог: "" - по умолчанию, текущий.
::Глагол (verb): runas - запуск от имени Администратора.
::Режим отображения окна: 1 - Normal (обычные режим. Окно отображается).
  Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"1","","runas",1 >"%~dp0Elevating.vbs"
:: Запускаем сервер сценариев без отображение сведений о нем (//nologo), запускаем Elevating.vbs с аргументом = имени бат-файла с путем
  cscript.exe //nologo "%~dp0Elevating.vbs" "%~dpnx0"& Goto :eof
)
 
:: Удаляем Elevating.vbs
>nul del "%~dp0Elevating.vbs"
 
 
::
:: <--- Здесь код Вашей основной программы
::
 
 
:: Переходим в каталог с бат-файлом
:: При выполнении повышения прав рабочий каталог бат-файла автоматически сменяется на %windir%\system32
chdir /d "%~dp0"
 
::Пытаемся записать пустой файл в корень системного раздела
cd.>c:\test.log
 
::Если записанный файл существует - пишем ОК, то есть повышение прав удалось успешно.
if exist c:\test.log Echo OK.
 
 
pause

3) С использованием mshta (способ от ComSpec):

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
reg.exe query "HKU\S-1-5-19">nul 2>&1
if %errorlevel% equ 1 goto UACPrompt
 
::
:: <--- Здесь код Вашей основной программы
::
 
pause>nul
exit /b
 
 
:UACPrompt
mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "", "", "runas", 1) & Close()"
exit /b

Запуск скрипта с повышенными привилегиями [руководство]

Start Admin Console.cmd
Запускает новое окно консоли с повышенными правами и переходит в папку, где сам находится
Ожидает ввода команд от пользователя.

Bash
1
2
3
4
5
6
7
8
9
10
@set @x=0; new ActiveXObject('Shell.Application').ShellExecute ('cmd.exe','/K ' + '"' + WScript.ScriptFullName + '"' + ' Admin','','runas',1);/*
@echo off
if "%~1" neq "Admin" (
  cscript.exe //nologo //e:jscript "%~f0"
) else (
  cd /d "%~dp0"
)
exit /B
 
*/



16



Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

23.02.2014, 21:18

 [ТС]

4



1



Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

22.01.2015, 14:34

 [ТС]

5



2



Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

20.07.2015, 22:49

 [ТС]

6

Как запустить VBScript, JScript с повышенными привилегиями?

1) Создайте к Вашему скрипту ярлык -> правой кнопкой мыши (ПКМ) по файлу скрипта -> «Создать ярлык».

Название: 1.png
Просмотров: 5655

Размер: 30.9 Кб

2) В свойствах ярлыка (ПКМ по ярлыку)

Запуск скрипта с повышенными привилегиями [руководство]

на вкладке «Ярлык»:
— в поле «Объект» допишите слева слово WSCRIPT и знак пробела
— нажмите «Применить»
— нажмите «Дополнительно»

Запуск скрипта с повышенными привилегиями [руководство]

Поставьте галочку «Запускать от имени администратора».

Запуск скрипта с повышенными привилегиями [руководство]

Нажмите «ОК» в обоих окнах.

Значок скрипта изменится на такой:

Название: 5.png
Просмотров: 5655

Размер: 13.6 Кб

Теперь можете запускать скрипт через этот ярлык (с повышенными привилегиями).

Будет задан вопрос от «Контроля учетных записей», на который следует ответить утвердительно.

Запуск скрипта с повышенными привилегиями [руководство]



5



Модератор

Эксперт JS

4957 / 2011 / 387

Регистрация: 06.01.2013

Сообщений: 4,707

02.12.2016, 02:11

7



0



2 / 2 / 0

Регистрация: 09.12.2015

Сообщений: 26

23.04.2017, 14:37

8

а можно допилить этот код так чтобы после согласия на разрешение прав окно батника пропадало а не висело пока выполняется команда? Заранее спасибо!

вот этот код:

@set @x=0; /*
@echo off
ver |>NUL find /v «5.» && if «%~1″==»» cscript.exe //nologo //e:jscript «%~f0″& exit /b

::
:: <— Здесь код Вашей основной программы
::

pause
exit /B

:: Эту строку не трогать. Ниже ничего не писать!!!
*/new ActiveXObject(‘Shell.Application’).ShellExecute (WScript.ScriptFullName,’Admin’,»,’runas’,1);



0



Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

23.04.2017, 15:09

 [ТС]

9

Любой батник «висит» пока в нём выполняется команда.
Вообще, тут ещё от команды зависит, если вызывается внешняя GUI-шная программа (т.е. оконная), то батнику ждать не обязательно.



0



2 / 2 / 0

Регистрация: 09.12.2015

Сообщений: 26

23.04.2017, 16:54

10

вот вставляю этот код в батник и он перестает висеть (открывается на секунду и закрывается и команда продолжает работать без окна)

вот код:
%1@mshta vbscript:Execute(«CreateObject(«»Wscript.Shell»»).Run «»»»»»%~f0″»»» :»»,0:Close()»)& exit/b

но перестает запускаться от администратора(

можно ка кто эти два кода подружить?



0



Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

23.04.2017, 17:05

 [ТС]

11

Цитата
Сообщение от valli_vasia
Посмотреть сообщение

можно ка кто эти два кода подружить?

2 кода? Я только один вижу, при чём непонятно откуда вы его взяли.
При том так до сих пор и не понятно, что вы хотите сделать.



0



2 / 2 / 0

Регистрация: 09.12.2015

Сообщений: 26

23.04.2017, 17:24

12

второй код я писал в предыдущем сообщении)

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

Добавлено через 11 минут
Вообщем то суть такая: Нужен батник чтобы он находил все файлы с расширением .xml на нескольких жестких дисках (допустим С и D) и переименовывал их в db.xml (при этом если в одной папке больше таких файлов чем один то добавлял им цифру типо db.xml db1.xml db2.xml … и т.д.) Надо его запускать от админа так как диск С системный( и чтобы само окно невесело пока он ищет все эти файлы. Помогите разобраться пожалуйста.



0



2 / 2 / 0

Регистрация: 09.12.2015

Сообщений: 26

24.04.2017, 22:30

13

Люди добрые помогите пожалуйста!



0



2 / 2 / 0

Регистрация: 09.12.2015

Сообщений: 26

27.04.2017, 12:51

14

Возможно хоть вообще такое?

Добавлено через 20 часов 36 минут
Ни кто не знает?(

может кто подскажет: Нужен батник чтобы он находил все файлы с расширением .xml на нескольких жестких дисках (допустим С и D) и переименовывал их в db.xml (при этом если в одной папке больше таких файлов чем один то добавлял им цифру типо db.xml db1.xml db2.xml … и т.д.) и чтобы окно невесело пока он ищет все эти файлы. Помогите пожалуйста.



0



4332 / 2122 / 661

Регистрация: 26.04.2015

Сообщений: 6,823

27.04.2017, 14:58

15

все это понятно, но

Цитата
Сообщение от valli_vasia
Посмотреть сообщение

чтобы окно невесело

вот и окну уже не вЕсело.
Для чего надо скрывать окно? Вы что очень часто проделываете эту операцию по переименованию в однотипный шаблон всех найденных xml, на кой такое нужно. Для разовой задачи нет смысла скрывать окно, можно и потерпеть и забыть.
Если задача не разовая, поясните — зачем именно так. Папка my_xml и все туды.



0



0 / 0 / 0

Регистрация: 18.04.2016

Сообщений: 7

04.05.2018, 17:20

16

Может кто знает как запустить bat/vbs не от имени админа, а с повышением прав? Возможно ли такое? Если скрипт пишет что то в HKEY_CURRENT_USER, то при запуске от имени админа все пишется в профиль админа, а нужно в пользовательский.



0



4332 / 2122 / 661

Регистрация: 26.04.2015

Сообщений: 6,823

04.05.2018, 17:36

17

Цитата
Сообщение от GarfieldX
Посмотреть сообщение

все пишется в профиль админа

а повернуть реку вспять религия не позволяет?

Добавлено через 3 минуты
если вы будете в своей комнате на обоях писать нехорошие слова маркером, но с разрешения хозяина квартиры, написанное наблюдать вам придется, на своих обоях своей комнаты.



0



0 / 0 / 0

Регистрация: 18.04.2016

Сообщений: 7

04.05.2018, 17:49

18

Цитата
Сообщение от alpap
Посмотреть сообщение

а повернуть реку вспять религия не позволяет?

Может тогда снизойдете до более подробных объяснений?
Честно — не соображу что и как.
Есть vbs скрипт запускаемый батником, который с свою очередь запускается с админскими правами. Понятно, что только часть операций в скрипте требует админских прав. Вы предлагаете рулить процессом кусочно или как то по-другому?



0



4332 / 2122 / 661

Регистрация: 26.04.2015

Сообщений: 6,823

04.05.2018, 18:56

19

GarfieldX,
с помощью админских разрешений вы получили доступ к запретной папке, но кто потом запрещает копировать оттуда файлы туда куда хочется или писать и сохранять логи в папку (файлы) в своем профиле? Или я чего-то не понимаю в ваших действиях?



0



0 / 0 / 0

Регистрация: 18.04.2016

Сообщений: 7

04.05.2018, 19:57

20

alpap,
Проблема в доступе к ветке реестра HKEY_CURRENT_USER, который является относительно ссылкой, а не абсолютной.
Или та же %appdata%, которая ведет в профиль текущего пользователя. Только в этом случае выкрутиться можно, а вот с реестром пока не нашел как.



0



Содержание:

  • 1 Как создать файл с расширением BAT
  • 2 Основные команды, синтаксис и примеры использования батников
  • 3 Запуск bat-файлов от имени администратора и по расписанию, скрытый запуск bat

Использование графического интерфейса в операционных системах сегодня представляется чем-то само собой разумеющимся и совершенно естественным, но так было не всегда. Первая операционная система MS DOS, разработанная компанией Microsoft, не имела GUI, а управление выполнялось посредством ввода текстовых команд. С тех пор минуло без малого 40 лет, однако скриптовый язык командной строки по-прежнему пользуется популярностью, причём не только в среде разработчиков.

Командная строка не столь удобна, зато с её помощью можно выполнять недоступны из GUI операции. С другой стороны, запускать каждый раз консоль, вводить в неё одну за другой команды – всё это сильно замедляет работу. Впрочем, можно существенно упростить задачу, создав бат-файл или попросту батник – текстовый файл с расширением BAT, содержащий список инструкций, обрабатываемых командным интерпретатором CMD. Используются такие файлы для автоматизации разных задач, например, для удаления временных файлов по расписанию или запуска программ.

Итак, как создать bat-файл в Windows 7/10? Очень просто. Для этого понадобится любой текстовый редактор и знание основ командной строки. Можно использовать Блокнот, а ещё лучше Notepad++, так как последний имеет подсветку синтаксиса. Создайте в редакторе новый файл, в меню «Файл» выберите «Сохранить как», дайте будущему скрипту имя, а в выпадающем списке «Тип файла» выберите «Batch file (*bat; *cmd; *nt)».

Создание bat-файла в Notepad++ шаг 1

Создание bat-файла в Notepad++ шаг 2

Если для создания bat-файла захотите использовать Блокнот, расширение нужно присвоить вручную, а в списке «Тип файла» выбрать «Все файлы».

Сохранение bat-файла в Блокноте

Как видите, создать файл с расширением bat не составляет сложности, есть тут, однако, свои тонкости. В командных файлах нельзя использовать перенос строк, кодировка bat-файла должна быть выставлена UTF-8, если в теле скрипта используется кириллица, кодировку нужно изменить, вставив в положенном месте команду chcp 1251.

Вместо расширения BAT можно использовать CMD, результат выполнения скрипта будет точно таким же.

Основные команды, синтаксис и примеры использования батников

Как сделать bat-файл вы знаете, теперь настала пора самого интересного, а именно синтаксиса языка интерпретатора CMD. Понятно, пустой батник работать не будет, он даже не запустится при двойном по нему клике. Чтобы скрипт сработал, в нём должна быть прописана хотя бы одна команда. Для наглядного примера посмотрим, как написать bat-файл для запуска программ. Допустим, приступая к работе, вы каждый раз запускаете три программы – Chrome, Firefox и VLC. Упростим задачу, создав скрипт, который будет сам запускать эти программы с интервалом в пять секунд.

Открываем пустой батник и вставляем в него такие команды:

start "" "C:/Program Files/Google/Chrome/Application/chrome.exe"
timeout /t 05
start "" "C:/Program Files/Mozilla Firefox/firefox.exe"
timeout /t 05
start "" "C:/Program Files/VideoLAN/VLC/vlc.exe"

kak-sozdat-bat-fail-4

Команда start запускает исполняемый файл нужной программы, а команда timeout /t задаёт интервал между запусками. Обратите внимание на расположение кавычек – в них берутся пути, в которых имеются пробелы. Также если в пути есть кириллические символы, в начало скрипта следует вставить изменяющую кодировку команду chcp 1251, в противном случае интерпретатор не сможет правильно прочитать путь.

kak-sozdat-bat-fail-5

При запуске скрипта будет последовательно открыто четыре окна консоли, это нормальное явление, по выполнении команд все они автоматически закроются, впрочем, можно сделать так, чтобы открывалось только первое окно. Для этого код запуска приложения следует изменить следующим образом:

start /b "" "путь"

kak-sozdat-bat-fail-6

Может также статься, что в определённый момент потребуется приостановить выполнение скрипта, чтобы пользователь сам смог решить, выполнять ли все остальные команды или нет. Для этого существует команда pause. Попробуйте заменить ею timeout и увидите, что получится.

start /b "" "путь"
pause

kak-sozdat-bat-fail-7

Рассмотрим ещё один пример команд для bat файла. Напишем скрипт, который будет в одном случае выключать компьютер, а в другом – перезагружать его. Для этих целей мы будем использовать команду shutdown с параметрами /s, /r и /t. При желании можно добавить в батник запрос на выполнение действия, вот так:

@echo off
chcp 1251
echo "Вы действительно хотите выключить компьютер?"
pause
shutdown /s /t 0

kak-sozdat-bat-fail-8

kak-sozdat-bat-fail-9

Поясняем. Первая команда скрывает текст самих команд, вторая – устанавливает кириллическую кодировку, третья – выводит сообщение для пользователя, четвертая – устанавливает паузу, пятая – выключает, а с ключом /r вместо /s перезагружает компьютер без традиционной задержки в одну минуту. Если не желаете церемониться с запросами и паузами, можете оставить только пятую команду.

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

Что ещё можно делать с помощью скриптов? Много чего, например, удалять, копировать или перемещать файлы. Допустим, у вас есть некая папка data в корне диска D, содержимое которой нужно очистить одним махом. Открываем батник и вставляем в него такую команду:

del /A /F /Q "D:/data"

kak-sozdat-bat-fail-10

А можно и так:

forfiles /p "D:/data" /s /m *.* /c "cmd /c Del @path"

kak-sozdat-bat-fail-11

В отличие от первой, вторая команда удаляет файлы рекурсивно, то есть в папке data будут удалены все файлы плюс те, которые лежат во вложенных каталогах.

А вот ещё один полезный пример. Напишем скрипт, который будет создавать резервную копию содержимого одной папки и сохранять данные в другую. За копирование отвечает команда robocopy:

robocopy C:/data D:/backup /e
pause

kak-sozdat-bat-fail-12

Запустив такой батник на исполнение, вы скопируете все содержимое папки data в папку backup, включая вложенные каталоги, пустые и с файлами. К слову, команда robocopy имеет много параметров, позволяющих очень гибко настраивать параметры копирования.

kak-sozdat-bat-fail-13

Запуск bat-файлов от имени администратора и по расписанию, скрытый запуск bat

Теперь вы знаете как создавать батники и имеете некое общее представление о языке интерпретатора CMD. Это были основы, теперь пришла пора познакомиться с некоторыми полезными особенностями работы с bat-файлами. Известно, что для выполнения некоторых действий программам нужны права администратора. Понадобиться они могут и батникам. Самый очевидный способ запустить скрипт от имени администратора, это кликнуть по нему правой кнопкой мыши и выбрать в контекстном меню соответствующую опцию.

Запуск bat-файла от имени администратора

Кроме того, можно сделать так, что конкретный батник будет запускаться с повышенными привилегиями всегда. Для этого необходимо создать на такой скрипт обычный ярлык, открыть его свойства, нажать кнопку «Дополнительно» и отметить в открывшемся окошке галочкой пункт «Запуск от имени администратора». Этот способ хорош ещё тем, что позволяет выбрать для ярлыка любой значок, тогда как файл с расширением BAT или CMD всегда будет иметь невзрачный вид.

kak-sozdat-bat-fail-15

Скрипты, как и все приложения, можно запускать по расписанию. Команда timeout /t здесь не совсем уместна, для отложенного запуска лучше всего использовать встроенный «Планировщик задач» Windows. Здесь всё просто. Открываем командой taskschd.msc Планировщик, определяемся с триггером, действие выбираем «Запустить программу» и указываем путь к bat-файлу. Вот и всё, скрипт будет запущен в положенное время.

Настройка запуска bat файла через Планировщик - шаг 1

Настройка запуска bat файла через Планировщик - шаг 2

Настройка запуска bat файла через Планировщик - шаг 3

Настройка запуска bat файла через Планировщик - шаг 4

Настройка запуска bat файла через Планировщик - шаг 5

И напоследок ещё один интересный момент. Когда вы запускаете bat-файл, на экране появляется, пусть даже на какую-то долю секунды, окно командной строки. А нельзя ли сделать так, чтобы скрипт выполнялся в скрытом режиме? Можно, причём несколькими способами. Самый простой заключается в следующем. Создаём на bat-файл ярлык, открываем его свойства и в меню «Окно» выбираем «Свёрнутое в значок». После этого единственным видимым признаком запуска скрипта будет появление значка CMD на панели задач, окон же при этом открываться не будет.

kak-sozdat-bat-fail-21

Если вы желаете полностью скрыть выполнение скрипта, можете воспользоваться «костылем» – скриптом VВS, который будет запускать ваш батник в скрытом режиме. Текст скрипта приведен ниже, сохраните его в файл hidden.vbs, предварительно заменив путь во второй строчке кода D:/sсript.bat путём к вашему батнику.

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "D:\script.bat" & Chr(34), 0
Set WshShell = Nothing

kak-sozdat-bat-fail-22

Есть также и другие варианты, например, использование утилиты Hidden Start, позволяющей запускать исполняемые и пакетные файлы в скрытом режиме, в том числе без приглашения UAC.

А на этом пока всё. Информацию касательно создания скриптов BAT без труда можно найти в интернете. Неплохо также ознакомиться с учебником Уильяма Станека «Командная строка Microsoft Windows». Несмотря на то, что с момента издания книги прошло более десяти лет, содержащаяся в ней информация до сих пор актуальна.

Андрей Хамлюк

Эксперт по ремонту и настройке ПК с более чем 5-летним опытом работы. Имеет профильное образование по специальности оператор ЭВМ.

Задать вопрос

How do I run a batch file from another batch file with administrator rights?

I have tried the RUNAS command, but it requires the administrator password.

I am searching for an alternative for running a batch file by right clicking on it and running as an administrator. I want to automate it from another batch file.

Peter Mortensen's user avatar

asked Sep 12, 2013 at 4:48

Vinay KV's user avatar

5

Put each line in cmd or all of theme in the batch file:

@echo off

if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)

"Put your command here"

it works fine for me.

MrSmile's user avatar

MrSmile

1,2172 gold badges12 silver badges20 bronze badges

answered Jul 23, 2018 at 5:34

Hossein Jafarinejad's user avatar

1

On Windows 7:

  1. Create a shortcut to that batch file

  2. Right click on that shortcut file and choose Properties

  3. Click the Advanced button to find a checkbox for running as administrator

Check the screenshot below

Screenshot

Peter Mortensen's user avatar

answered Feb 10, 2015 at 14:24

fedmich's user avatar

fedmichfedmich

5,3433 gold badges37 silver badges52 bronze badges

3

You can use PowerShell to run b.bat as administrator from a.bat:

set mydir=%~dp0

Powershell -Command "& { Start-Process \"%mydir%b.bat\" -verb RunAs}"

It will prompt the user with a confirmation dialog. The user chooses YES, and then b.bat will be run as administrator.

Peter Mortensen's user avatar

answered Dec 15, 2014 at 7:40

bismack163's user avatar

bismack163bismack163

2262 silver badges4 bronze badges

0

Use

runas /savecred /profile /user:Administrator whateveryouwanttorun.cmd

It will ask for the password the first time only. It will not ask for password again, unless the password is changed, etc.

answered Sep 12, 2013 at 4:54

user93353's user avatar

user93353user93353

13.7k8 gold badges60 silver badges122 bronze badges

5

If you’re trying to invoke a Windows UAC prompt (the one that puts the whole screen black and asks if you’re granting administrator privileges to the following task), RUNAS is not the smoothest way to do it, since:

  1. You’re not going to get prompted for UAC authorization, even if logged in as the administrator and
  2. RUNAS expects that you have the administrator password, even if your user is setup as a local administrator, in which case the former password is not a sound security practice, specially in work environments.

Instead, try to copy & paste the following code to ensure that your batch file runs with administrator privileges:

@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 ----

This solution works 100% under Windows 7, 8.1 and 10 setups with UAC enabled.

Peter Mortensen's user avatar

answered Oct 31, 2014 at 14:26

alejandrob's user avatar

alejandrobalejandrob

6038 silver badges6 bronze badges

3

Runas.exe won’t work here. You can use VBScript to invoke the «Run as Administrator» shell verb. The Elevation Powertoys contain a batchfile that allows you to invoke an elevated command:

elevatecmd.exe

http://blogs.technet.com/b/elevationpowertoys/

answered Jan 24, 2014 at 6:54

surfasb's user avatar

surfasbsurfasb

9681 gold badge13 silver badges31 bronze badges

1

CMD Itself does not have a function to run files as admin, but powershell does, and that powershell function can be exectuted through CMD with a certain command. Write it in command prompt to run the file you specified as admin.

powershell -command start-process -file yourfilename -verb runas

Hope it helped!

answered Jan 1, 2021 at 4:44

DCT A's user avatar

DCT ADCT A

215 bronze badges

This a trick that i used if anyone wants they can try this in batch file.This will give you the admin prompt when you run the batch file

@echo off
cd \ && cd windows/system32 && command which needs admin credentials
pause

answered Apr 25, 2018 at 11:29

Sushant Baweja's user avatar

Sushant BawejaSushant Baweja

2021 gold badge5 silver badges14 bronze badges

A batch file includes the commands to be executed by Command Prompt in Windows 10 (and older versions). I have already explained what a batch file is and how to create your own. However, you’ll require administrator privileges for your batch file to run some commands in the Windows Command Prompt.

In this article, let’s look at how to enable the ‘Run As Administrator’ option for a batch file in Windows. This simple trick will save your efforts of using the right-click to enable the ‘Run As Administrator’ command prompt every time.

We’ll be using Windows 10 to show the process of automatically running a batch file with Windows admin rights. However, the method works on older versions, including Windows 7 and Windows 8/8.1, as batch files have existed for a long time. Follow the steps mentioned below.

1. Right-click on your batch file.

batch file run as administrator 1

2. Click Create Shortcut

3. Right-click on the shortcut files and click on Properties.

batch file run as administrator 2

4. In the Shortcuts tab, click on Advanced.

run batch file as admin

5. Check the ‘Run as Administrator’ checkbox.

run as admin

6. Click OK to close the dialogue box.

7. Click on Apply to save the changes. Click Ok to close Properties.

Now, every time you run the shortcut file by double-clicking it, the Windows UAC message will be displayed. Click Ok to run as administrator in Windows. This is required as commands would need access to more system-level components that are not available when you open CMD in user mode.

Did you find this helpful? Tell us in the comments below.

Aditya likes to cover topics related to Microsoft, Windows 10, Apple Watch, and interesting gadgets. But when he is not working, you can find him binge-watching random videos on YouTube (after he has wasted an hour on Netflix trying to find a good show).

Reach out at [email protected]

I have this line inside my BAT file:

"Example1Server.exe"

I would like to execute this in Administrator mode. How to modify the bat code to run this as admin?

Is this correct? Do I need to put the quotes?

runas /user:Administrator invis.vbs Example1Server.exe

asked Jul 25, 2011 at 2:51

karikari's user avatar

karikarikarikari

6,64716 gold badges64 silver badges79 bronze badges

2

The other answer requires that you enter the Administrator account password. Also, running under an account in the Administrator Group is not the same as run as administrator see: UAC on Wikipedia

Windows 7 Instructions

In order to run as an Administrator, create a shortcut for the batch file.

  1. Right click the batch file and click copy
  2. Navigate to where you want the shortcut
  3. Right click the background of the directory
  4. Select Paste Shortcut

Then you can set the shortcut to run as administrator:

  1. Right click the shortcut
  2. Choose Properties
  3. In the Shortcut tab, click Advanced
  4. Select the checkbox «Run as administrator»
  5. Click OK, OK

Now when you double click the shortcut it will prompt you for UAC confirmation and then Run as administrator (which as I said above is different than running under an account in the Administrator Group)

Check the screenshot below

Screenshot

Note:
When you do so to Run As Administrator, the current directory (path) will not be same as the bat file. This can cause some problems in many cases that the bat file refer to relative files beside it. For example, in my Windows 7 the cur dir will be SYSTEM32 instead of bat file location!
To workaround it, you should use

cd "%~dp0"

or better

pushd "%~dp0"

to ensure cur dir is at the same path where the bat file is.

Danny Beckett's user avatar

Danny Beckett

20.6k24 gold badges107 silver badges134 bronze badges

answered Dec 11, 2012 at 0:08

Ed Greaves's user avatar

Ed GreavesEd Greaves

4,8172 gold badges23 silver badges19 bronze badges

11

You use runas to launch a program as a specific user:

runas /user:Administrator Example1Server.exe

answered Jul 25, 2011 at 2:54

Kerrek SB's user avatar

Kerrek SBKerrek SB

466k92 gold badges876 silver badges1086 bronze badges

7

Just add this to the top of your bat file:

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 )

It will elevate to admin and also stay in the correct directory. Tested on Windows 10.

answered Sep 26, 2018 at 12:24

Sire's user avatar

SireSire

4,0954 gold badges39 silver badges74 bronze badges

9

If you can use a third party utility, here is an elevate command line utility.

The source and binaries are available on GitHub.

This is the usage description:

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

answered Mar 17, 2013 at 14:14

aphoria's user avatar

aphoriaaphoria

19.8k8 gold badges64 silver badges73 bronze badges

1

You can use nircmd.exe’s elevate command

NirCmd Command Reference — elevate

elevate [Program] {Command-Line Parameters}

For Windows Vista/7/2008 only: Run a program with administrator rights. When the [Program] contains one or more space characters, you must put it in quotes.

Examples:

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

PS: I use it on win 10 and it works

answered May 16, 2017 at 12:25

Dheeraj Bhaskar's user avatar

Dheeraj BhaskarDheeraj Bhaskar

18.6k9 gold badges63 silver badges66 bronze badges

  1. My experimenting indicates that the runas command must include the admin user’s domain (at least it does in my organization’s environmental setup):

    runas /user:AdminDomain\AdminUserName ExampleScript.bat
    

    If you don’t already know the admin user’s domain, run an instance of Command Prompt as the admin user, and enter the following command:

    echo %userdomain%
    
  2. The answers provided by both Kerrek SB and Ed Greaves will execute the target file under the admin user but, if the file is a Command script (.bat file) or VB script (.vbs file) which attempts to operate on the normal-login user’s environment (such as changing registry entries), you may not get the desired results because the environment under which the script actually runs will be that of the admin user, not the normal-login user! For example, if the file is a script that operates on the registry’s HKEY_CURRENT_USER hive, the affected “current-user” will be the admin user, not the normal-login user.

answered May 29, 2019 at 15:47

pstraton's user avatar

pstratonpstraton

1,08014 silver badges9 bronze badges

go get github.com/mattn/sudo

Then

sudo Example1Server.exe

answered Jun 30, 2017 at 9:26

mattn's user avatar

mattnmattn

7,60130 silver badges54 bronze badges

1

When you use the /savecred argument, it asks for the password once, and than never asks for it again. Even if you put it onto another program, it will not ask for the password. Example for your question:

runas /user:Administrator /savecred Example1Server.exe

answered Jul 28, 2017 at 21:16

Anonymous's user avatar

AnonymousAnonymous

7364 gold badges14 silver badges36 bronze badges

0

convert your batch file into .exe with this tool: http://www.battoexeconverter.com/ then you can run it as administrator

answered Apr 5, 2013 at 14:56

xxedxx's user avatar

xxedxxxxedxx

651 silver badge1 bronze badge

3

I Tested @Sire’s answer on Windows 11, and it works like a charm. It’s worth mentioning that using cmd /k — as @Sire has used — will keep the Administrator CMD open after it finishes running. Using cmd /c instead will close the window when it’s over with the batch file.

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", "/c cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )

answered Feb 10, 2022 at 12:17

Achilles's user avatar

AchillesAchilles

1,5641 gold badge28 silver badges36 bronze badges

1

I found there is possible to use powershell. The powershell will show the default Windows UAC Dialog.

powershell Start -File Example1Server.exe -Verb RunAs

For execute BAT file with admin rights, the content of the BAT file can look as this:

@echo off
if "%1"=="runas" (
  cd %~dp0
  echo Hello from admin mode
  pause
) else (
  powershell Start -File "cmd '/K %~f0 runas'" -Verb RunAs
)

where:

  • %1 First input argument assigned to BAT file.
  • %~f0 expands to full path to the executed BAT file
  • %~dp0 expands to full directory path from where the BAT file is executed
  • cmd -C <commands> Execute command in terminal and close

answered Nov 1, 2021 at 8:25

Martin Vyskočil's user avatar

Use the complete physical drive\path to your Target batch file in the shortcut Properties.

This does not work in Windows 10 if you use subst drives like I tried to do at first…

answered Dec 9, 2018 at 9:51

Samiamias's user avatar

Другие наши интересноые статьи:

  • Запуск командной строки из установщика windows
  • Запуск перезапуск и останов сервера под управлением oc windows
  • Запуск обновления windows 10 вручную
  • Запуск командной строки до запуска windows
  • Запуск ноутбука с клавиатуры windows 10

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии