Запуск от имени администратора программ и командной строки

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

Как сделать 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"

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

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

start /b "" "путь"

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

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

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

Запуск из системного каталога WindowsSystem32

Можно запустить командную строку прямо из ее родной папки system32. Для этого заходим в Проводник / Мой компьютер, находим диск C, ищем папку Windows, идём туда, находим папку System32,

углубляемся все дальше и дальше в кроличью нору

заходим в неё. В папке System32 ищем файл

cmd.exe

. Выделяем его. И тут появляется два варианта.

Самый быстрый и простой: правой кнопкой мышки кликаем на cmd.exe и выбираем уже знакомый нам Запуск от имени администратора.

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

Длинные имена в bat-файлах

Иногда в bat встречаются программы, не работающие с длинными именами с пробелами – обычно это некоторые старые программы для MS-DOS. В этих случаях помогает использование коротких DOS-имен без пробелов, а также кавычек.

Правила записи коротких DOS-имен (формат 8.3): задействуется шесть начальных символов имени папки, не учитывая пробелы, далее указывается ее номер по порядку через ~. Например: start C:Program FilesMozilla Firefoxfirefox.exe преобразуется в: start C:

Возможна ситуация, когда в одном каталоге имеются несколько папок с одинаковыми символами в названии.

Их короткие имена в этом случае должны нумероваться в соответствии с алфавитным порядком папок:

  • Mozill~1;
  • Mozill~2;
  • Mozill~3.

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

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

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

Справка. Команда CD – пожалуй, единственное универсальное решение вопроса длинных имен в bat-файлах.

Дополнительные свойства ярлыка

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

Заходим в свойства ярлыка (правая кнопка мышки и Свойства) и идём в раздел «Дополнительно».

Откроются дополнительные параметры. Там отметьте галочкой параметр «Запуск от имени администратора». Теперь при обычном запуске программы она всегда откроется с повышенными правами.

В свойствах на вкладке «Совместимость» есть опция «Запускать эту программу от имени администратора». Тоже полезная вещица.

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

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

:/>  Виртуальная память Windows 10: как настроить, увеличить размер, добавить объем, очистить, отключить

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

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

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

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

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

Запуск от имени администратора пропал – нет кнопки | пункта

Нередко бывают моменты, когда в Windows происходят сбои. Это предсказать очень сложно, но исправить возможно. Например, вы хотите запустить программу от имени администратора. По стандарту нажимаете на ярлык правой кнопкой мышки, а пункта, отвечающего за запуск с повышенными привилегиями нет. При этом опция может находиться в меню Win X.

Бывает так, что открыть программы от имени админа возможно только в случае, если зайти в системный диск и запустить программу оттуда. Например, нужно запустить ярлык, находящийся по пути C:Program Files (x86)AIMP/aimp.exe, а не с рабочего стола.

Самое простое решение – почистить кэш системы. Существует много способов очистки временных мусорных файлов. Делается это следующим образом:

  • Открываем Пуск.
  • Переходим в меню «Выключение».
  • Зажимаем клавишу Shift и щелкаем по кнопке «Завершение работы».
  • Готово.

Следующий опыт показал, что проверка системы на целостность системных файлов и восстановление повреждённых возможна при выполнении в командной строке или утилите PowerShell следующих команд:

  1. DISM.exe /Online /Cleanup-image /Restorehealth
  2. sfc /scannow

Запустить bat из под администратора?

Существует множество приложений Windows, для работы которых требуются права администратора. В современных ОС для этого обычно используется режим ”Запуск от имени администратора” контекстного меню проводника. При этом выводится запрос средства контроля учетных записей пользователя UAC (User Account Control ), требующего подтверждения разрешения на запуск приложения:

Запрос средства контроля учетных записей UAC

Если пользователь нажимает кнопку ”Да”, приложение выполняется с повышением привилегий в контексте учетной записи администратора. Если же пользователь нажмет ”Нет” – приложение выполнится в контексте пользовательской учетной записи. Такой же результат будет получен, если пользователь вообще не ответит на запрос UAC – по истечении времени ожидания ответа, приложение будет запущено в контексте учетной записи пользователя. Это делает проблематичным выполнение командных файлов с повышением привилегий в автоматическом режиме, поскольку требуется вмешательство пользователя. Для решения данной проблемы большинство пользователей Windows, как правило, отключают систему контроля учетных записей UAC, что нежелательно, поскольку это снижает уровень безопасности ОС. Так, например, при выключенном UAC, пользователь даже не заметит как вирус-шифровальщик удалит теневые копии томов и приступит к шифрованию файлов. В результате будут гарантировано потеряны данные без какой-либо возможности их восстановления. При включенном же UAC, попытка удаления теневых копий с помощью стандартной утилиты vssadmin.exe приведет к отображению на экране запроса UAC, который, как минимум, привлечет внимание пользователя и позволит отреагировать на угрозу. Подробнее о вероятности восстановления данных после вируса-шифровальщика в отдельной статье.

Таким образом, возникает задача выполнения программ или командных файлов от имени администратора при включенном UAC, но без запроса на разрешение их запуска.
Одним из способов решения подобной задачи является использование специально подготовленной задачи стандартного Планировщика заданий Windows.
Необходимо создать задачу для запуска командного файлат с повышенными привилегиями.
Переходим в ”Панель управления” – ”Администрирование” – ”Планировщик заданий” – ”Библиотека планировщика заданий”, выбираем в меню ”Действия” – ”Создать простую задачу”.
С помощью мастера создания простой задачи, создаем задачу, например, с именем Admbat

Создание простой задачи в планировщике заданий

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

Создание простой задачи в планировщике заданий, триггер - Однократно

В качестве действия выбираем ”Запустить программу”

Создание простой задачи в планировщике заданий – Запустить программу

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

Ставим галочку на ”Открыть окно ”Свойства” для этой задачи после нажатия кнопки ”Готово” ”. В свойствах задачи включаем режим ”Выполнить с наивысшими правами”.

:/>  Системные требования для установки Windows 7 | Секреты Windows 7

Общие свойства задачи в планировщике заданий Windows

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

netstat –b – отобразить список соединений с именами создавших их программ. Параметр b требует административных привилегий. Содержимое командного файла:


Rem Выполняем команду в контексте учетной записи пользователя
netstat –b
rem Пауза для просмотра результатов
pause
Rem Готовим содержимое командного файла Ifadmin.bat задачи планировщика Admbat
echo netstat –b > C:Scriptsifadmin.bat
echo pause >> C:Scriptsifadmin.bat
Rem Выполним задачу планировщика с именем Admbat
schtasks /run /tn Admbat

Таким образом, сначала будет выполнена команда netstat –b в контексте учетной записи пользователя, с выдачей сообщения


Запрошенная операция требует повышения.

а затем, с помощью задачи Admbat планировщика заданий – с повышенными привилегиями, т.е. под учетной записью с правами администратора – на экран будет выведен список соединений с именами программ.

При необходимости выполнения конкретного командного файла в контексте учетной записи администратора, можно просто скопировать его содержимое в C:Scriptsifadmin.bat :

copy C:MyScriptsadmin1.bat C:Scriptsifadmin.bat

И выполнить задачу планировщика Admbat командой:

schtasks /run /tn Admbat

Задача планировщика будет использоваться одна и та же – Admbat, но содержимое командного файла ifadmin.bat можно менять под свои потребности.

Задачу планировщика можно создать и из командной строки с помощью утилиты schtasks.exe и разрешить ее выполнение с правами администратора, задав параметр /RL HIGHEST

schtasks /create /TN “Admbat” /TR “C:Scriptsifadmin.bat” /SC ONCE /SD 11/12/2021 /ST 14:00 /RL HIGHEST.

Естественно, данная команда должна выполняться в контексте учетной записи с правами администратора.

В заключение добавлю, что нелишней будет проверка в наличия администраторских прав в самом командном файле ifadmin.bat. Это легко реализуется с помощью команды:

WHOAMI /PRIV – отобразить действующие привилегии текущего пользователя.

Так, например, удаленное выключение компьютера доступно только в контексте учетной записи администратора. В этом случае, в результатах вывода WHOAMI присутствует строка “SeRemoteShutdownPrivilege”. С помощью команды find ищем эту строку в результатах вывода команды whoami /priv и если она найдена (переменная ERRORLEVEL равна нулю) – командный файл выполняется с правами администратора. Например:


@echo OFF
WHOAMI /PRIV | find /i “SeRemoteShutdownPrivilege” > nul
if %ERRORLEVEL% == 0 goto admin
color 8F
echo Нет прав администратора.
pause
exit
:admin
color f0
ECHO Есть права администратора.
pause

Можно создать командный файл, проверяющий наличие прав администратора, и при их отсутствии, выполняющий свой перезапуск с использованием повышения привилегий за счет задачи планировщика Admbat.

Алгоритм следующий:

– выполняется проверка наличия прав администратора, так же как это происходило в предыдущем примере, и, при их отсутствии, содержимое командного файла копируется в файл, запускаемый планировщиком заданий (ifadmin.bat).

– выполняется задача планировщика Admbat для запуска файла ifadmin.bat с правами администратора без запроса UAC.

– завершается текущий командный файл (но вместо него выполняется он же, скопированный в (ifadmin.bat), но с правами администратора).

Содержимое командного файла:


@echo OFF

WHOAMI /PRIV | find /i “SeRemoteShutdownPrivilege” > nul

if %ERRORLEVEL% == 0 goto admin

copy /Y %~f0 C:Scriptsifadmin.bat

schtasks /run /TN Admbat

exit

:admin

start “notepad with admin rights” %SystemRoot%notepad.exe C:Scriptsifadmin.bat

exit

Несколько пояснений. Данный командный файл вначале проверяет наличие прав администратора, и если они есть – выполняется переход на метку :admin – запускается блокнот, открывающий файл C:Scriptsifadmin.bat. После чего работа командного файла завершается по команде exit. Если права администратора отсутствуют, выполняется копирование текущего командного файла, имя и путь которого принимает переменная %~f0, в файл C:Scriptsifadmin.bat. Для подавления запроса на перезапись существующего файла команда copy используется с ключом /Y. После копирования, выполняется запуск задачи планировщика, обеспечивающей повторный запуск этого же командного файла (скопированного в файл C:Scriptsifadmin.bat, но уже с правами администратора системы.

Дополнительная информация по теме:

Планировщик заданий Windows

Список команд CMD Windows

Управление планировщиком заданий в командной строке Windows

Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой “Поделиться”

В начало страницы             |            
На главную страницу сайта

Как запустить bat файл с правами администратора при входе пользователя в систему?

Имеется:

Active Directory, политика по установке нужного ПО, доменные учетные записи без прав администратора, машины на win7-win8.1.

Задача:
Одно из приложений необходимо ставить непосредственно из под учетки пользователя, так как файлы записываются в пользовательскую папку appdata/roaming. При этом, приложению необходимы для установки права администратора.
Установка производится через batch скрипт запускающий с нужными ключами .msi файл.

Попытки решения:
Для решения уже пробовалась конструкция runas, но не вариант, так как при первом запуске на каждой машине придется ввести пароль администратора, что не выполнимо.
CPAU и RunAsSPC тоже тестировались, проблема в том что установка файлов происходит в папку того самого администратора зашифрованного этими программами, а не в папку пользователя ее запускающего.

:/>  Бесплатно скачать Anvisoft PC Plus для Windows ::: Программное обеспечение

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

Вопрос:
Могут ли быть еще какие то варианты установки?

Как заставить bat запускаться от имени админа?

С помощью runas привилегии повышаются действительно только для встроенного администратора.

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

Но сохранять с помощью runas /savecred пароль администратора – это выстрел себе в ногу. С помощью этого сохраненного пароля и runas можно будет любую программу запускать с повышенными привилегиями из-под любого пользователя. Этим вы сделаете большую дыру в безопасности сети.

На самом деле не очень понятна цель этого мероприятия – вы меняете IP адрес. Зачем? Чувствую, что, то что вы хотите добиться, должно быть сделано по другому. Варианты:
1. Сделайте 2 IP на одном интерфейсе и пусть они всегда будут.
2. Организовать доступ в 172.16.11 подсеть через промежуточный шлюз, на котором в зависимости от некоторых условий можно разрешать доступ или нет.
3. Можно запускать netsh удаленно с админскими привилегиями, запускать, конечно должен админ, а не пользователь. Если у вас есть АД, то доменный админ может это делать, если АД нет, то на пользовательском компе нужно выставить ключ в реестре:
reg add HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
Этот ключ позволяет при сетевом доступе с админскими правами автоматически повышать привилегии. Локальных пользователей и их привилегии это не затрагивает.

Более конкретно можно будет сказать, если вы опишите цель смены IP.

Как создать bat-файл

Для этого:

  1. Открыть «Блокнот», набрав в строке поиска панели задач (изображение лупы внизу слева) слово блокнот и щелкнув мышью по всплывшей пиктограмме.
  2. Вписать в блокноте команды ipconfig /flushdns и pause.

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

  3. В окне блокнота щелкнуть мышью «Файл» – «Сохранить как».
  4. В окне «Сохранить как» щелкнуть слева, куда поместить файл, написать имя создаваемого файла и указать расширение .bat (через точку) (1), выбрав в «Тип файла» – «Все файлы» (2). Затем нажать «Сохранить» (3).
  5. Щелкнуть дважды мышью на сохраненном файле. В отдельных ситуациях может потребоваться запуск bat под именем администратора. Для этого щелкнуть на нем мышью (правой), и выбрать «Запуск от имени администратора».

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

https://www.youtube.com/watch?v=xNOKAR6jcgQ

В данном случае содержимое кэш службы разрешения имен DNS успешно очищено, исправляя проблемы отображения интернет-страниц и другие проблемы DNS. Система предлагается нажать любую клавишу для закрытия окна.

Как создать пакетный файл для запуска cmd от имени администратора

(это основано на @DarkXphenomenon это, который, к сожалению, были некоторые проблемы.)

вам нужно заключить свой код в эту оболочку:

if _%1_==_payload_  goto :payload

:getadmin
    echo %~nx0: elevating self
    set vbs=%temp%getadmin.vbs
    echo Set UAC = CreateObject^("Shell.Application"^)                >> "%vbs%"
    echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
    "%temp%getadmin.vbs"
    del "%temp%getadmin.vbs"
goto :eof

:payload
    echo %~nx0: running payload with parameters:
    echo %*
    echo ---------------------------------------------------
    cd /d %2
    shift
    shift
    rem put your code here
    rem e.g.: perl myscript.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
goto :eof

это заставляет пакетный файл работать как повышенный пользователь. Он добавляет два параметра в привилегированный код:

  • слово payload, чтобы указать, что это вызов полезной нагрузки, т. е. уже повышен. Иначе
    это просто откроет новые процессы и свыше.

  • путь к каталогу, где основной скрипт называется. Из-за того, что Windows всегда
    начинается повышенный УМК.exe в “%windir%system32”, нет простого способа узнать, что
    первоначальный путь был (и сохраняя способность скопировать ваш сценарий вокруг без
    трогательный код)

Примечание: к сожалению, по какой-то причине shift не работает %*, Так что если вам нужно
пройти фактические аргументы, вам придется прибегнуть к уродливой нотации, которую я использовал
в Примере (%1 %2 %3 %4 %5 %6 %7 %8 %9), который также приносит в пределе
максимум 9 аргументов

Не моу запустить батник от администратора.

Абсолютно, исходя из принципа бритвы оккама, можно прописать путь к exe-ику при этом в пути необходимо убрать все спецсимволы в названии папок, пробелы, точки и прочее….., гораздо проще сразу поставить флаг на исполняемом файле, вот не думал что по этому поводу выйдет дискуссия

Эта тема была раньше, просто автор любит мультиобщение.

Оставьте комментарий

Adblock
detector