Групові політики

Як запустити сценарій (дію) при запуску (завершення) певної програми в Windows?

Як запустити сценарій (дію) при запуску (завершення) певної програми в Windows?

У цій статті ми розглянемо, як відстежувати подію запуску певної програми (процес) у Windows та виконати певну дію (запустіть сценарій, надсилати електронну пошту тощо.D.). Як приклад, ми відстежуємо запуск процесу Блокнот.Екзе , Коли користувач відкриває цю програму, Windows автоматично запускає певний сценарій PowerShell.

Перш за все, у Windows потрібно налаштувати політику аудиту процесу. На окремому комп’ютері ви можете налаштувати аудиторську політику через редактор локального GPO ( Gpedit.MSC ), якщо вам потрібно налаштувати політику на доменних комп'ютерах/серверах, використовуйте редактор домену GPMC.MSC .

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

Тепер, коли запускає будь -який процес у Windows у перегляді подій журналу -> Журнали Windows -> Захист з’явиться подією EventID 4688 (Новий процес був віросповіданням). Подія вказує, хто запустив процес ( Назва рахунку ), назва процесу ( Нова назва процесу ) і назва батьківського процесу ( Назва процесу творця ).

Ви можете зробити зразок подій програми з журналу подій у певному процесі за допомогою командира PowerShell Get Wineeent:

Get -wineeent -filterhashtable @
Logname = 'безпека'
Id = 4688
| Виберіть -Object timecreted,@name = 'newProcessName'; exmanse = $ _.Властивості [5].Значення, @name = 'user'; exmanse = $ _.Властивості [1].Значення | Що -Object $ _.Newprocessname -подібний "*блокнот.exe*"

Як результат, ми отримали таблицю, що вказує на користувачів, які запустили певну програму.

Тепер вам потрібно створити завдання планувальника, яке слід запустити, коли подія з’явиться 4688.

  1. Завдання запуску Sheduler ( TaskShd.MSC ) і створити нове завдання -> Створити завдання;
  2. Вкажіть назву завдання та вкажіть, що воно повинно бути запущено для всіх користувачів (під час виконання завдання використовуйте наступний обліковий запис користувача -> Вбудовані \ користувачі). Якщо ви створюєте завдання планувальника через GPO, використовуйте формат %Logondomain%\%logonuser% ;
  3. На вкладці Дії Попросіть дію, яку ви хочете виконати. У цьому прикладі я запускаю сценарій PowerShell (зателефонуйте до програми PowerShell.Екзе З атрибутами -ExectutionPolicy Bypass -file "C: \ ps \ processrun.PS1 "
  4. Тепер вам потрібно пов'язати завдання планувальника до події Windows. Перейдіть на вкладку Тригер -> Новий -> На події -> Звичайний -> Новий фільтр подій;
  5. У вікні, яке відкриється, потрібно вказати такі параметри фільтра подій: Журнали події: Безпека
    Ідентифікатор події: 4688
    Ключові слова: Успіх аудиту
  6. Тепер перейдіть на вкладку XML І увімкніть варіант Редагувати запит мановольно. Відредагуйте запит, додавши рядок до фільтра: та *[EventData [дані [@name = 'newProcessName'] та (data = 'c: \ windows \ system32 \ блокнот.exe ')]]
  7. Буде отримано запит XML:


    *[System [постачальник [@name = 'Microsoft-Windows-Security-Auditing'] та завдання = 13312 та (діапазони (ключові слова, 9007199254740992)) та (eventId = 4688)]]]]]]]]]]]]]]]]]]]]]]] ]])
    і
    *[EventData [дані [@Name = 'newProcessName'] та (data = 'C: \ Windows \ System32 \.exe ')]]


  8. Збережіть завдання планувальника.

Спробуйте запустити процес блокнота зараз.Екзе. Тепер кожного разу, коли користувач запускає зошит, виконується ваш сценарій PowerShell.

У цьому прикладі я через PowerShell відображаю повідомлення про вікна з вікон. Ви можете використовувати будь -який інший сценарій PowerShell - наприклад, надсилати лист, що завгодно.

Якщо вам потрібно відстежувати завершення програми, використовуйте ідентифікатор події 4689 - Процес вийшов. Після завершення програми іноді потрібно запустити резервний сценарій тощо.D.

Раніше ми розглядали сценарій PowerShell для автоматичного перезапуску процесу у разі зупинки. Рішення з відстеженням запуску/зупинки процесів є більш елегантним і не вимагає розширеного сценарію PowerShell для моніторингу робочих процесів.

Усунення інвалідів з оперативною пам’яттю
Сьогодні я розповім про те, як усунути проблеми з смужками оперативної пам’яті. Спочатку потрібно визначити, працює оперативна пам’ять чи ні. Якщо ком...
Як замінити мініатюри Windows на панелі завдань у Windows 10 на звичайний список
Якщо поставити курсор миші на значок запущеної програми на панелі управління, над ним з’явиться невелике вікно попереднього перегляду. Застосування пр...
Легкий темний режим та планувальник завдань як засіб перемикання між темними та темними темами дизайну у Windows 10
Реалізувавши темну тему дизайну у Windows, розробники, однак, не обчислили варіант перемикання між настільки важливими, щоб розмістити його в центрі д...