Перейти к содержимому

Как запустить планировщик заданий от имени администратора

  • автор:

Выполнение приложений от имени Администратора без запроса UAC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

copy C:\MyScripts\admin1.bat C:\Scripts\ifadmin.bat

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

schtasks /run /tn Admbat

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

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

schtasks /create /TN «Admbat» /TR «C:\Scripts\ifadmin.bat» /SC ONCE /SD 11/12/2018 /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 ), но с правами администратора).

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

WHOAMI /PRIV | find /i «SeRemoteShutdownPrivilege» > nul

if %ERRORLEVEL% == 0 goto admin

copy /Y %~f0 C:\Scripts\ifadmin.bat

schtasks /run /TN Admbat

start «notepad with admin rights» %SystemRoot%\notepad.exe C:\Scripts\ifadmin.bat

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

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

Запуск программ по расписанию с помощью планировщика Windows

Используя планировщик заданий Windows , вы можете запланировать запуск приложений в определённое время с определёнными условиями. В этой статье я расскажу, как запланировать выполнение нужных вам задач, в частности запуск программы для выгрузки данных из Тирики по расписанию. Программку такую можно заказать у нас; как это сделать, описано вот в этой статье. Планировщик заданий Windows — весьма полезная программа, самое главное ей надо научиться правильно пользоваться, приступим к настройке заданий.

Для запуска планировщика нужно зайти в «Панель управления» в раздел «Администрирование»:

Раздел Администрирование Панели Управления Windows
Раздел Администрирование Панели Управления Windows

Далее в следующем окне (см.ниже) необходимо найти пункт «Планировщик заданий» и щёлкнуть по нему мышкой:

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

Вот мы и попали в главное окно планировщика заданий. В этом окне нам нужно выбрать пункт «Создать задачу»:

Создание новой задачи

И мы попадём в окно «Создание задачи» (см .ниже) в этом окне на вкладке «Общие» придумаем имя будущей задачи, например «Export spiska tovarov» если требуется запускать задачу с правами администратора, то поставьте галочку напротив «выполнить с наивысшими правами». Другие поля заполнять не обязательно.

Назначение имени заданию Планировщика Windows

Далее в этом окне переходим на вкладку «Триггеры» (см. ниже), эта вкладка пока пуста. На ней нажимаем кнопку «Создать»:

Создание нового триггера в задаче Планировщика Заданий

И мы попадём в окно «Создание триггера» (см. ниже), открываем ниспадающее меню напротив «Начать задачу» и выбираем «По расписанию». Указываем нужные параметры расписания, я указал ежедневно, повторять каждый час бесконечно. Нажимаем кнопку «ОK» для сохранения созданного триггера:

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

Далее переходим на вкладку «Действия» (см ниже) где также нужно нажать кнопку «Добавить» чтоб настроить выполняемое действия по нашему настроенному расписанию на предыдущем шаге:

Добавление выполняемого действия Планировщика Задач

И мы попадаем в окно «Создание действия». Здесь выбираем запуск программы и нажимаем кнопку «Обзор» для того, чтобы указать путь до запускаемой нами программы:

Указание пути к программе, которую будет запускать Планировщик Заданий Windows

Откроется проводник, и в нем мы укажем программу, которую хотим запускать по расписанию. Я указал программу «Export spiska tovarov»:

Указание программы, которую будет запускать Планировщик Заданий Windows

После нажатия кнопки «Открыть» мы попадём в предыдущее окно, где будет указан путь до запускаемой программы (см. ниже). В этом окне нужно нажать кнопку ОК.

Сохранение программы, которую будет запускать Планировщик Заданий Windows

Снова попадём в окно «Создание Задачи» (см. ниже) в котором буде присутствовать только что созданная Вами задача:

Задача Планировщику Заданий создана

На вкладке «Условия» (см. ниже), почитайте предлагаемые условия, все просто и понятно, сложностей возникнуть не должно.

Проверка созданной задачи Планировщика Заданий

Вкладка «Параметры» почитайте предлагаемые параметры, установите по своему усмотрению, сложностей это так же не должно вызвать:

Параметры созданной задачи Планировщика Заданий

Нажимаем Ok, все задача создана! И она будет выполнятся по расписанию с заданными параметрами.

запустить программу в планировщике от имени администратора

можно ли как то под администратором создать задачу в планировщике, чтобы любой пользователь при входе в windows 7 получал приложение запущенное с правами администратора. Планировщик позволяет создать такую задачу, но на практике не работает.

Отслеживать
задан 28 окт 2019 в 6:01
23 6 6 бронзовых знаков
Вот ссылка где уже решили похожую проблему — forum.oszone.net/thread-326631.html
28 окт 2019 в 6:48

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

28 окт 2019 в 7:40

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Windows 7 под рукой нет. На Windows 10 это выглядит так:

Имеется учётная запись admin, имеющая права администратора (не встроенный администратор!). Имеется учётная запись test, имеющая права обычного пользователя.

Создаю в папке C:\tmp батч-файл с именем test.bat следующего содержания:

cd /d %ProgramFiles% md test copy c:\tmp\test.bat .\test\*.* 

Создаю с планировщике задание со следующими параметрами:

  • При выполнении использовать учётную запись: admin
  • Выполнять: для всех пользователей
  • Триггер: При входе в систему — любого пользователя
  • Действия: Запуск программы c:\tmp\test.bat

Сохраняю задание (при этом запрашивается ввод пароля учётной записи admin — ввожу). Выполняю вход пользователем test. Наблюдаю появление в каталоге C:\Program Files подкаталога tmp с файлом test.bat.

Отслеживать
ответ дан 28 окт 2019 в 9:34
31.1k 3 3 золотых знака 20 20 серебряных знаков 40 40 бронзовых знаков

получилось. спасибо. там нюанс в том что визуально не увидишь запущенное приложение, я и не видел поэтому.Но не страшно, лишь бы работало. Можно ли как то создать задачу в планировщике запустив скрипт (на этом этапе права администраторские есть)? Или скопировать рабочую задачу в планировщик другого компьютера (права тоже есть)?

28 окт 2019 в 11:04

нюанс в том что визуально не увидишь запущенное приложение Да, это так. Я не зря сказал «Наблюдается», и ни полслова — про окно консоли. Причём мне вообще не удалось вывести окно на экран, хотя формально управление им доступно (в processexplorer пункт Window-Bring to front). Можно ли как то создать задачу в планировщике запустив скрипт? Да, вполне. Всё, что делается руками, может делаться и программно. Но утилиты командной строки (AT, SCHTASKS) такой тип задания создавать не умеют — придётся использовать средства VBS или PS.

28 окт 2019 в 11:10
Можно подробнее? Я пока не сталкивался с этими средствами. Хотя бы полное название
28 окт 2019 в 11:54

VBS = Visual Basic Script, PS = PostScript. Работа с заданиями планировщика выполняется через объект «Schedule.Service».

28 окт 2019 в 12:10

Думаю там все равно придется вводить пароль администратора так или иначе. Мне не нужен именно планировщик . Мне нужен способ запустить скрипт с правами администратора. Вполне устроит программа в коде которой явно прописан пароль администратора. Аналог runus но без интерактивного ввода пароля. Если знаете как ее сделать, то подскажите пожалуйста.

Запуск приложения с правами администратора и без выдачи сообщения при включенном UAC (Windows 7)

Навеяно статьей Настройка UAC в Windows 7. Я прочитал комментарии и мне захотелось описать здесь возможность запуска доверенного приложения с правами администратора при включенном UAC. Данная технология действительно хороший шаг компании Майкрософт к безопасности использования компьютера пользователем, однако пользователь может часто использовать неподписанные приложения которым сам доверяет, что приводит к постоянным выдачам сообщения системы UAC и дальнейшему раздражению пользователя. Как запускать приложения с правами администратора и без выдачи сообщения от UAC я рассмотрю на примере использования FAR Manager, который мне необходим по работе.
Итак, для начала необходимо зайти в планировщик заданий
«Пуск — Все программы — Стандартные — Служебные — Планировщик заданий» (Start — All Programs — Accessories — System Tools — Task Scheduler)
и «Создать задачу» (Create task). В появившемся окне задаем «Имя» (Name), (к примеру, FAR) задачи и устанавливаем флажок на опции «Выполнять с наивысшими правами» (Run with highest privileges).
Далее переходим на вкладку «Действия» (Actions) и жмем кнопку «Создать» (New) для настройки запускаемой программы.
В поле «Программа или сценарий» (Program/script) с помощью кнопки «Обзор» (Browse) указываем местоположение необходимого нам запускаемого файла и нажимаем кнопку «Открыть» (Open). Далее нажимаем два раза кнопки ОК.

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

Создаем ярлык на рабочем столе и в поле «Расположение объекта» (Target) вводим schtasks /run /tn FAR (если же имя задачи было из нескольких слов разделенных пробелами, необходимо имя задачи в ярлыке указать в «двойных кавычках»). Жмем «Далее» (Next), задаемя имя ярлыка (лучше всего чтобы оно совпадало с названием программы) и жмем кнопку ОК. Далее можно зайти в свойства этого ярлыка и назначить ему иконку от программы. Минус данного метода состоит в том, что таким образом можно запустить всего одну копию программы. Чтобы сделать две копии, необходимо будет прописать еще одно задание в планировщике с другим именем, но по той же системе и так же сделать на него ярлык.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *