Запуск сценария (программы) при открытии/закрытии определенной программы в Windows

В этой статье мы покажем, как отследить событие запуска определенной программы (процесса) в Windows и выполнить действие (запустить скрипт, команду, программу, отправить письмо и т. д.). В качестве примера мы будем отслеживать запуск процесса Notepad.exe. И когда пользователь откроет блокнот, Windows автоматически запустит определенный сценарий PowerShell.

Прежде всего, настройте политику аудита процессов в Windows. Вы можете настроить политику аудита на отдельном компьютере с помощью редактора локальной групповой политики (gpedit.msc). Если вы хотите настроить политику на компьютерах и серверах в домене AD, используйте консоль управления групповой политикой (gpmc.msc).

  1. Перейти к Конфигурация компьютера -> Настройки Windows -> Настройки безопасности -> Местная политика -> Политика аудита;
  2. Открыть Отслеживание процесса аудита свойства и включите его для Успех события;Включение политики отслеживания процессов аудита в Windows
  3. Примените параметры групповой политики, выполнив команду: gpupdate /force

Теперь при запуске любого процесса в Windows будет появляться событие с именем EventID 4688 (A new process has been created) появится в окне просмотра событий -> Журналы Windows -> Безопасность. Событие показывает, кто запустил процесс (Имя учетной записи), имя процесса (Имя нового процесса), а также имя родительского процесса (Имя процесса-создателя).

EventID 4688 (Создан новый процесс)

С помощью PowerShell можно выбрать события запуска приложений из журнала событий по конкретному процессу:

Get-WinEvent -FilterHashtable @{
LogName="Security"
ID = 4688
} | Select-Object TimeCreated,@{name="NewProcessName";expression={ $_.Properties[5].Value }}, @{name="User";expression={ $_.Properties[1].Value }}|where-object {$_.NewProcessName –like “*notepad.exe*”}

В результате мы получили историю запуска программы пользователями на этом компьютере.

получение истории запущенных процессов из Event Viewer с помощью PowerShell

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

  1. Откройте планировщик задач (taskschd.msc) и создайте новую задачу -> Создать задачу;
  2. Укажите имя задачи и укажите, что она должна выполняться для всех пользователей (При выполнении задачи используйте следующую учетную запись пользователя -> BUILTIN\Users). Если вы создаете задачу с помощью GPO, используйте этот формат: %LogonDomain%\%LogonUser%;
  3. На Действия На вкладке «Действия» задайте действие, которое вы хотите выполнить. В этом примере я запущу сценарий PowerShell (вызов powershell.exe с атрибутами: -ExecutionPolicy Bypass -file "C:\PS\ProcessRunEvent.ps1); запуск сценария PowerShell с помощью запланированной задачи
  4. Затем привяжите задачу к событию Windows. Перейдите к Триггеры вкладка, выберите Новый -> О событии -> Пользовательский -> Новый фильтр событий;
  5. В следующем окне укажите следующие параметры фильтра событий:
    Журналы событий: Security
    Идентификатор события: 4688
    Ключевые слова: Audit Success
    аудит событие безопасности 4688
  6. Затем перейдите к XML , включите вкладку Редактирование запроса вручную вариант. Отредактируйте запрос, добавив в фильтр следующую строку: and *[EventData[Data[@Name="NewProcessName"] and (Data="C:\Windows\System32\notepad.exe")]]
  7. Вы получите следующий XML-запрос:
    <QueryList>
    <Query Id="0" Path="Security">
    <Select Path="Security">
    *[System[Provider[@Name="Microsoft-Windows-Security-Auditing"] and Task = 13312 and (band(Keywords,9007199254740992)) and (EventID=4688)]]
    and
    *[EventData[Data[@Name="NewProcessName"] and (Data="C:\Windows\System32\notepad.exe")]]
    </Select>
    </Query>
    </QueryList>
    

    редактировать фильтр событий XML

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

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

Например, с помощью PowerShell можно отобразить всплывающее уведомление или отправить электронное письмо.

Запуск сценария PowerShell при запуске определенной программы в Windows

После закрытия определенного приложения иногда требуется запустить сценарий резервного копирования и т.д. Если вы хотите отследить выход из программы, используйте событие с идентификатором Event ID 4689A process has exited.

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

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