Как запустить bat-файл (пакетный файл) с правами администратора Windows
Научившись создавать и изменять пакетные bat-файл для Windows, сразу начинаешь понимать, на сколько это удобно, и как много времени можно экономить, размещая часто используемые команды (и даже целые списки команд) в файлы и запуская их одним кликом! Однако такое счастье не может быть вечным, так как некоторые команды требуют прав администратора Windows для их выполнения. И для этого приходится запускать их в консоли с правами администратора. Если с командной строкой всё ясно, то как же быть с батником, в котором эта команда присутствует? Тоже всё просто! Ниже рассмотрим как раз этот вопрос: Как запустить bat-файл (пакетный файл) с правами администратора Windows?
Выполнить bat-файл (пакетный файл) с правами администратора Windows
Для того, чтобы запустить bat-файл (пакетный файл) с правами администратора Windows не нужно каких-то особых навыков или знаний. Для этого нужно кликнуть по его названию или иконке правой кнопкой мыши. После этого, из выпавшего контекстного меню выбрать (левой кнопкой мыши) пункт «Запуск от имени администратора»:

После этих простых манипуляций, bat-файл запустится с правами администратора, и все команды, содержащиеся в нём также будут выполнены с этими правами. Таким образом, создавая батники, можно быстро решать типовые и часто возникающие проблемы, не запоминая кучу команд и их параметров.
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Выберите, то, чем пользуетесь чаще всего:
Как запрограммировать BAT-файл, чтобы он всегда запускался в режиме администратора?
Я хочу выполнить это в режиме администратора. Как изменить код летучей мыши для запуска от имени администратора?
Это правильно? Нужно ли ставить кавычки?
12 ответов
Вы используете runas для запуска программы от имени конкретного пользователя:
Просто добавьте это в начало вашего файла летучей мыши:
Он повысится до уровня администратора, а также останется в правильном каталоге. Проверено на Windows 10.
Если вы можете использовать стороннюю утилиту, вот утилита командной строки elevate .
Исходный код и двоичные файлы доступны на GitHub.
Это описание использования:
Справочник по командам NirCmd — поднять
Только для Windows Vista / 7/2008: запускать программу с правами администратора. Если [Программа] содержит один или несколько пробелов, вы должны заключить их в кавычки.
PS: я использую его на win 10, и он работает
Конвертируйте ваш командный файл в .exe с помощью этого инструмента: http://www.battoexeconverter.com/, тогда вы можете запустить его как администратор
Когда вы используете аргумент /savecred , он запрашивает пароль один раз, а затем никогда не запрашивает его снова. Даже если вы поместите его в другую программу, он не будет запрашивать пароль. Пример вашего вопроса:
runas /user:Administrator /savecred Example1Server.exe
Используйте полный физический диск \ путь к целевому пакетному файлу в ярлыке Свойства.
Это не работает в Windows 10, если вы используете дополнительные диски, как я пытался сделать сначала .
Я обнаружил, что можно использовать powershell . PowerShell покажет диалоговое окно Windows UAC по умолчанию.
Для выполнения файла BAT с правами администратора содержимое файла BAT может выглядеть следующим образом:
- %1 Первый входной аргумент, присвоенный BAT-файлу.
- %
Другой ответ требует, чтобы вы вводили пароль учетной записи администратора. Кроме того, запуск под учетной записью в группе администраторов отличается от запуска от имени администратора , см .: UAC в Википедии
Инструкции для Windows 7
Чтобы работать от имени администратора, создайте ярлык для командного файла.
- Щелкните правой кнопкой мыши командный файл и нажмите «Копировать».
- Перейдите туда, где вы хотите, чтобы ярлык
- Щелкните правой кнопкой мыши фон каталога
- Выберите «Вставить ярлык»
Затем вы можете установить ярлык для запуска от имени администратора:
- Щелкните правой кнопкой мыши ярлык
- Выберите Свойства
- На вкладке «Ярлык» нажмите «Дополнительно».
- Установите флажок «Запуск от имени администратора».
- Нажмите ОК, ОК
Теперь, когда вы дважды щелкните ярлык, он запросит подтверждение UAC, а затем Запуск от имени администратора (который, как я сказал выше, отличается от запуска под учетной записью в группе администраторов)
Проверьте снимок экрана ниже

Примечание. Когда вы сделаете это для запуска от имени администратора, текущий каталог (путь) не будет таким же, как у файла bat. Это может вызвать некоторые проблемы во многих случаях, когда файл bat ссылается на относительные файлы рядом с ним. Например, в моей Windows 7 текущим каталогом будет SYSTEM32 вместо местоположения файла bat! Чтобы обойти это, вы должны использовать
Чтобы убедиться, что каталог cur находится по тому же пути, что и файл bat.
Мои эксперименты показывают, что команда runas должна включать домен администратора (по крайней мере, в настройках среды моей организации):
Если вы еще не знаете домен пользователя-администратора, запустите экземпляр командной строки от имени пользователя-администратора и введите следующую команду:
Ответы, предоставленные как Керрек С.Б. , так и Эд Гривз , будут выполнять целевой файл от имени администратора, но, если файл является командным сценарием (файл .bat) или сценарием VB (файл .vbs), который пытается работать в среде обычного пользователя, входящего в систему (например, изменяя записи реестра), вы можете не получить желаемых результатов, потому что среда, в которой фактически запускается сценарий, будет принадлежать пользователю с правами администратора, а не пользователь с нормальным входом! Например, если файл представляет собой сценарий, который работает с кустом реестра HKEY_CURRENT_USER, затронутым «текущим пользователем» будет пользователь с правами администратора, а не пользователь с обычным входом.
Я протестировал @Sire answer в Windows 11, и он работает отлично. Стоит отметить, что использование cmd /k — как это использовал @Sire — будет держать CMD администратора открытым после его завершения. Использование cmd /c вместо этого закроет окно, когда он закончится с пакетным файлом.
Как сделать чтобы батник запускался от имени администратора
Доброго времени суток!
Сеанс загружен под учёткой с правами пользователя "User".
Запускаю пакетный файл от имени учётки "Admin", обладающей правами администратора, но в процессе выполнения этого пакетного фала он нормально не отрабатывает.
Если я Зайду под учёткой "Admin" и запущу пакетный файл, выбрав в контекстном меню "Запуск от имени администратора", то пакетный файл отработает нормально.
Настройки UAC изменять не могу.
Подскажите пожалуйста как быть в данной ситуации?
Если подойти с точки зрения написания самого пакетного файла, то если я добавлю в его начало строчку "set __COMPAT_LAYER=RunAsInvoker" то отрабатывает только часть этого пакетного файла:
reg add "HKLM\Software\1" /v 1 /t REG_SZ /d "1" /f
reg add "HKLM\Software\2" /v 2 /t REG_SZ /d "2" /f
for /f "usebackq tokens=3,3* delims== " %%i in (`reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory`) do set profiles=%%i
for /f "usebackq delims==" %%i in (`echo %profiles%`) do set profiles=%%i
For /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-S "%profiles%" ^| FINDSTR /V /B /I /C:"All Users"`) DO (
reg load HKEY_USERS\Custom "%profiles%\%%i\NTUSER.DAT"
REG ADD "HKU\Custom\Software\1" /v 1 /t REG_SZ /d "1" /f
reg unload HKEY_USERS\Custom
Т.е. когда начинает пробовать поочереди подгружать кусты реестра всех профилей (reg load HKEY_USERS\Custom "%profiles%\%%i\NTUSER.DAT" и т.д.), то начинает ругаться:
"Ошибка: Клиент не обладает требуемыми правами
Ошибка: Параметр задан неверно
Ошибка: Клиент не обладает требуемыми правами"
- Изменено SANIOK_AV 15 января 2014 г. 9:40
- Перемещено Dmitriy Vereshchak Microsoft contingent staff, Moderator 31 января 2014 г. 11:31 Перемещено
- Изменен тип Vector BCO Moderator 31 октября 2015 г. 16:14 Отсутствие активности
Все ответы
Правильно ли я вас понял
1) вы в момент обработки от имени админа пытаетесь что то делать под залогиненым юзером и не выходит
2) под админом всё работает но пользователь от которого вы в варианте 1 пытались скрипту запустить не залогинен
Ответе пожалуйста на эти 2 вопроса есть одно предположение, но надо погуглить (сейчас этим занимаюсь)
Правильно ли я вас понял
1) вы в момент обработки от имени админа пытаетесь что то делать под залогиненым юзером и не выходит
2) под админом всё работает но пользователь от которого вы в варианте 1 пытались скрипту запустить не залогинен
Ответе пожалуйста на эти 2 вопроса есть одно предположение, но надо погуглить (сейчас этим занимаюсь)
Захожу в систему под User
Запускаю пакетный файл от имени Admin
Не работает, потому как для того что бы заработало нужно ещё с повышенными правами запустить. т.е если бы в сеансе User можно было бы запустить проводник от имени Admin и уже в проводнике при запуске пакетного файла выбрать в контекстном меню "Запуск от имени администратора", то всё бы заработало, но к сожалению проводник от имени другого пользователя у меня запустить не получалось)), только cmd или Far, а в них нет возможности вызвать контекстное меню.
Почему не получалась?
Пуск>Поиск>Windows Explorer>Правый клик>Запуск от администратора
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
- Изменено Dmitriy Vereshchak Microsoft contingent staff, Moderator 17 января 2014 г. 6:51
Добрый день!
Почему не получалась?
Пуск>Поиск>Windows Explorer>Правый клик>Запуск от администратора
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
Добрый день попробовал Вашим способом запустить Проводник, вот как отругалось:
Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item.
Возможно вопрос в том что пока вы находитесь под пользователем файл нтюзер.дат занят этим пользователем и не может быть прочитан другим пользователем пусть даже админом
если вы заходите под другим пользователем а реальный владелец нтюзер дат и прочего находится в логофе всё выходит
перепроверьте это предположение
В описанном Вами случае ругается только на нтюзер.дат только того пользователя под которым выполнен вход в систему, ну и заодно ругается на нтюзер.дат админа под которым запускается пакетный файл.
То есть если вход в систему выполнен под админом и мы просто (без контекстного меню) запусти пакетный файл, то в данном примере запись в реестр не происходит. Т.е. надо запускать батник через контекстное меню "Выполнить от имени администратора"
Выкладываю вывод скрипта:
Группа Тип SID Атрибуты
=============================================== ======================= ============ =============================================================
Все Хорошо известная группа S-1-1-0 Обязательная группа, Включены по умолчанию, Включенная группа
BUILTIN\Администраторы Псевдоним S-1-5-32-544 Группа, используемая только для запрета
BUILTIN\Пользователи Псевдоним S-1-5-32-545 Обязательная группа, Включены по умолчанию, Включенная группа
NT AUTHORITY\ИНТЕРАКТИВНЫЕ Хорошо известная группа S-1-5-4 Обязательная группа, Включены по умолчанию, Включенная группа
КОНСОЛЬНЫЙ ВХОД Хорошо известная группа S-1-2-1 Обязательная группа, Включены по умолчанию, Включенная группа
NT AUTHORITY\Прошедшие проверку Хорошо известная группа S-1-5-11 Обязательная группа, Включены по умолчанию, Включенная группа
NT AUTHORITY\Данная организация Хорошо известная группа S-1-5-15 Обязательная группа, Включены по умолчанию, Включенная группа
ЛОКАЛЬНЫЕ Хорошо известная группа S-1-2-0 Обязательная группа, Включены по умолчанию, Включенная группа
NT AUTHORITY\Проверка подлинности NTLM Хорошо известная группа S-1-5-64-10 Обязательная группа, Включены по умолчанию, Включенная группа
Обязательная метка\Средний обязательный уровень Метка S-1-16-8192 Обязательная группа, Включены по умолчанию, Включенная группа
Имя привилегии Описание Область, край
============================= ========================================== =============
SeShutdownPrivilege Завершение работы системы Отключен
SeChangeNotifyPrivilege Обход перекрестной проверки включен
SeUndockPrivilege Отключение компьютера от стыковочного узла Отключен
SeIncreaseWorkingSetPrivilege Увеличение рабочего набора процесса Отключен
SeTimeZonePrivilege Изменение часового пояса Отключен
D:\>reg add "HKLM\Software\1" /v 1 /t REG_SZ /d "1" /f
Ошибка: Отказано в доступе.
D:\>reg add "HKLM\Software\2" /v 2 /t REG_SZ /d "2" /f
Ошибка: Отказано в доступе.
D:\>for /F "usebackq tokens=3,3* delims== " %i in (`reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory`) do set profiles=%i
D:\>for /F "usebackq delims==" %i in (`echo %SystemDrive%\Users`) do set profiles=%i
Как создать bat файл в Windows 10
Пакетный (bat) файл – это тип файла, поддерживающий текст, имеющий расширение .bat, и включающий в себя построчные операторы для командной строки cmd.exe.

Этот тип файла – полезный инструмент автоматизации однообразных файловых операций – копирования, удаления и т.д., а также запуска различных приложений и выполнения других операций в ОС.
К примеру, если необходимо выполнить DOS-команду ipconfig/flushdns, очищающую кэш распознавателя DNS, это можно сделать через запуск cmd.exe. Однако, если процедуру нужно повторить многократно, лучше сделать это через запуск предварительно созданного bat-файла.
При создании файла bat, возможно, потребуется включение отображения файловых расширений. Для этого:
-
Щелкнуть мышью (правой) на кнопке «Пуск», и выбрать «Панель управления».



Как создать bat-файл
-
Открыть «Блокнот», набрав в строке поиска панели задач (изображение лупы внизу слева) слово блокнот и щелкнув мышью по всплывшей пиктограмме.


Справка! Использование оператора «pause» не позволяет DOS-экрану закрыться после исполнения bat-файла, чтобы у пользователя была возможность видеть ответ интерпретатора cmd.



Результат исполнения bat-файла отобразиться в DOS-окне.

В данном случае содержимое кэш службы разрешения имен DNS успешно очищено, исправляя проблемы отображения интернет-страниц и другие проблемы DNS. Система предлагается нажать любую клавишу для закрытия окна.
Если вы хотите более подробно узнать, как сделать файл бат, а также рассмотреть инструкцию по созданию, вы можете прочитать статью об этом на нашем портале.
Основные операторы bat-файла:
- ECHO: отображает текст в DOS-окне;
- ECHO OFF: отменяет показ текста команд в DOS-окне, показывая подсказку и выполненный результат;
- @ECHO OFF: отменяет показ текста команд и подсказок, показывая выполненный результат;
- XCOPY: используется для копирования каталогов и файлов с добавочными параметрами;
- START: запускает исполняемый файл .exe со своим стандартным приложением, открывает каталог;
- FOR/IN/DO: применяется для указания файлов;
- MKDIR: создает каталоги;
- REM: для ввода строки комментария в программе;
- RMDIR: для удаления каталогов;
- DEL: для удаления файлов;
- COPY: для копирования файлов;
- TITLE: редактирование заголовка окна.
Применение некоторых из перечисленных команд показано на примере ниже. Необходимо отметить, что команда @echo off скрывает путь выполняемой команды, отображаемый cmd на DOS-экране.

Запуск программ в файле bat происходит с помощью команды start и указанием имени запускаемой программы.

Также в файле может быть прописан полный путь до исполняемого файла.

Обе эти записи для firefox работают корректно. Однако, они обе корректны только для зарегистрированных в Windows приложений. Если попробовать запустить портативную программу (например, filezilla) без прописи всего пути к запускаемому файлу, она не запустится.
Длинные имена в bat-файлах
Иногда в bat встречаются программы, не работающие с длинными именами с пробелами – обычно это некоторые старые программы для MS-DOS. В этих случаях помогает использование коротких DOS-имен без пробелов, а также кавычек.
Правила записи коротких DOS-имен (формат 8.3): задействуется шесть начальных символов имени папки, не учитывая пробелы, далее указывается ее номер по порядку через
. Например: start C:Program FilesMozilla Firefoxfirefox.exe преобразуется в: start C:Progra
Возможна ситуация, когда в одном каталоге имеются несколько папок с одинаковыми символами в названии.

Их короткие имена в этом случае должны нумероваться в соответствии с алфавитным порядком папок:
Однако, если Mozilla Firefox будет удален с компьютера, следующие за Mozill
1 записи работать не будут. Поэтому, короткие DOS-имена – не лучший вариант решения проблемы длинных имен. Создание имен этого типа на NTFS также бывает отключено в реестре Windows.
Для решения проблемы длинных имен запись также может быть заключена в кавычки. Кавычки «», располагающиеся перед прописываемым путем к запускаемому файлу, являются обязательным атрибутом, включающим какой-либо заголовок или только кавычки.

Однако, в некоторых случаях кавычки не работают совсем. В этом случае возможно использование команды изменения текущего рабочего каталога Chdir (CD). Запись start firefox.exe приобретает в этом случае следующий рабочий вид.

Справка. Команда CD – пожалуй, единственное универсальное решение вопроса длинных имен в bat-файлах.
Запуск программ в bat-файлах с ключами
Программы в bat-файле можно не только запускать, но и устанавливать им дополнительные команды (ключи) запуска. Например, если запустить bat-файл с записью: start /?, он отобразит на DOS-экране список используемых с этим оператором ключей с необходимыми пояснениями.

Пример используемых ключей, где: — minimize – ключ для минимизации программы после ее запуска, — hide_splash – ключ для сворачивания программы в трэй.

Справка! Все, что относится к запускаемым файлам .exe, записывается с ними в файле bat в общей строке.
Команда создания папки выполняется в bat с помощью оператора MKDIR (MD). Если запустить приведенный в примере bat-файл, он создаст четыре вложенные папки на диске С.

Следующий пример – как открыть не один, а сразу несколько каталогов на диске С.
Копирование между папками с помощью bat-файла
В приведенном ниже примере показано, как скопировать папку с диска D: на диск E. Параметр /s разрешает копирование каталогов и подкаталогов. Параметр i/ создает новый каталог, чтобы команда xcopy скопировала в него файлы.

Базовый файл при этом как остается как на диске D, так и копируется в новое место, указанное в bat-файле.
Редактирование bat
- Чтобы отредактировать уже созданный файл bat, щелкнуть на нем мышью (правой), использовав пункт «Изменить».

Программы редактирования
Рядовому пользователю для взаимодействия с bat-файлами, возможно, хватит функционала простого «Блокнота», но, к примеру, системному администратору нужен редактор помощнее. Работать с bat можно в любых редакторах текстов, нацеленных на взаимодействие с кодом, в частности, в «Notepad++» или «Notepad2».