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

Добавив ярлык программы в каталог %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, можно сделать так, что эта программа станет автоматически запускаться после загрузки включение компьютера и загрузки рабочего стола. Но давайте представим другую ситуацию. Предположим, вы хотите, чтобы программа запускалась не в момент загрузки Windows, а в момент запуска или завершения работы другой программы.

Использовать для этих целей сторонние менеджеры? В принципе, можно поискать инструмент, который будет выполнять подобные задачи, но к чему засорять систему сторонними фоновыми процессами, если реализовать этот не особо хитрый трюк можно средствами самой Windows.

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

Первым делом нужно включить и настроить аудит процессов.

Откройте командой gpedit.msc редактор локальных групповых политик и перейдите по цепочке Конфигурация компьютера -> Конфигурация Windows -> Политики безопасности -> Локальные политики -> Политика аудита. В правой колонке откройте двойным кликом свойства политики «Аудит отслеживания процессов».

Редактор локальных групповых политик

Отметьте флажком пункт «Успех», сохраните настройки.

Аудит отслеживания процессов

И обновите конфигурацию политик командой gpupdate /force в командной строке или PowerShell.

Gpupdate

Отныне все запускаемые в Windows процессы будут отслеживаться и заноситься в раздел системного журнала событий Журналы Windows -> Безопасность. События эти легко найти — они имеют идентификатор 4688 и описание «Создан новый процесс». Если же открыть свойства события, то можно будет увидеть, какой именно процесс запущен и кем он запущен. Так, из этого скриншота хорошо видно, что был запущен процесс notepad.exe.

Журналы Windows

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

Если Блокнот (процесс notepad.exe) закрыть, в разделе журнала событий «Безопасность» появится запись с кодом 4689 и описанием «Выполнен выход из процесса».

Безопасность

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

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

Откройте командой taskschd.msc планировщик заданий, создайте новое задание.

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

Переключитесь на вкладку «Действия».

Новое задание

И создайте задачу — в данном примере запуск исполняемого файла cmd.exe.

Действия

Затем переключитесь на вкладку «Триггеры», нажмите «Создать».

Триггеры

И выберите начать задачу «При событии», параметры задания выберите «Настраиваемое» и нажмите «Создать фильтр события».

Создать

В открывшемся окошке в поле «Журналы событий» выберите «Безопасность».

Журналы событий

Код события выставьте 4688, а в поле «Ключевые слова» выберите «Аудит успеха».

Аудит успеха

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

Для этого придется вручную отредактировать XLM-код запроса.

Переключитесь в окошке фильтра события на вкладку «XML» и включите ручное редактирование запроса, установив галку в чекбоксе «Изменить запрос вручную».

XML

Отредактируйте код XML так, как показано на скриншоте.

Код XML

Файл с кодом запроса можно скачать по ссылке disk.yandex.ru/d/kg_mBQ8QX-tEkQ.

Сохраните задание.

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

Аналогичным образом создается задание для запуска одного процесса при завершении другого. В этом случае в фильтре событий нужно указать ID 4689, этот же идентификатор события указывается и в XML-коде, также в запросе следует заменить «NewProcessName» на «ProcessName», так как этот параметр указывается в свойствах события завершение процесса.

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

Оцените Статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (4 оценок, среднее: 5,00 из 5)
Загрузка...

3 комментария

  • Добрый день!
    Если в XML оставить EventID=4689 и добавить код проверки на процесс так:
    -----
    and

    *[EventData[Data[@Name='ProcessName'] and (Data='C:\Windows\System32\notepad.exe')]]
    ----------
    То Cmd.exe запускается после Notepad.exe

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

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