Wmi управління процесами

Приклади коду в статті наводяться на мові VBScript для адміністративних сценаріїв Windows. Наведені нижче приклади не вичерпують всіх можливостей класів, які в них згадуються (використовуються). Для отримання повної інформації звертайтеся до MSDN. Як правило, пошук в MSDN назви того чи іншого класу дозволяє швидко отримати перелік (опис) всіх його властивостей і методів.







За допомогою сценаріїв WMI можна запускати процеси як на локальній, так і на віддаленій машині (крім того, на віддаленій машині можна запускати процеси під довільній обліковим записом). Стандартний об'єкт WshController, наявний в Windows Script Host, також дозволяє створювати процеси на віддаленій робочої станції, однак для цього потрібна попередня настройка обох комп'ютерів і відсутня можливість примусово перервати запущений процес. У зв'язку з вищесказаним використання сценаріїв WMI для запуску процесів краще.

Клас Win32_Process представляє процеси. Наступний сценарій надає інформацію про запущені процеси на зазначеній машині, використовуючи деякі властивості класу Win32_Process. Точка в рядку WMI-монікера означає підключення до локального комп'ютера. Замінивши точку на потрібне ім'я комп'ютера, ви можете підключитися до будь-якого комп'ютера в локальній мережі.

Деякі корисні методи класу Win32_Process:

Create (string CommandLine, string CurrentDirectory, Win32_ProcessStartup ProcessStartupInformation, uint32 ProcessId)

Метод створює новий процес і повертає 0, якщо процес був успішно створений, або код помилки. параметри:
  • CommandLine - командний рядок для виконання.
  • CurrentDirectory - робоча папка. Якщо значення параметра дорівнює NULL, буде використовуватися шлях, вказаний в CommandLine.
  • ProcessStartupInformation - початкова конфігурація процесу, об'єкт класу Win32_ProcessStartup.
  • ProcessId - вихідний параметр, куди система поміщає ідентифікатор процесу. Значення цієї властивості актуально з моменту створення процесу до закінчення його роботи.






GetOwner (string User, string Domain)

Метод отримує облікові дані власника (ім'я користувача і ім'я домену), під якими працює процес, і повертає 0, якщо операція була успішною, або код помилки. параметри:
  • User - вихідний параметр, куди система поміщає ім'я користувача.
  • Domain - вихідний параметр, куди система поміщає ім'я домену або комп'ютера.

Метод отримує ідентифікатор безпеки (SID) власника процесу і повертає 0, якщо операція була успішною, або код помилки. У вихідний параметр Sid система поміщає ідентифікатор безпеки.

Метод примусово завершує процес і все його дочірні процеси і повертає 0, якщо операція була успішною, або код помилки. Параметр Reason вказує код завершення процесу і всіх його потоків.

Наступний сценарій демонструє найпростіший запуск процесу (notepad.exe) під поточної обліковим записом на локальній машині. Замінивши точку в WMI-монікере на потрібне ім'я комп'ютера, ви можете запустити процес на будь-якому комп'ютері в локальній мережі.

Наступний сценарій демонструє запуск процесу (notepad.exe) під зазначеної обліковим записом на зазначеній машині:

Клас Win32_ProcessStartup дозволяє вказати початкові параметри запуску нового процесу (наприклад, стан вікна, пріоритет і т.д.). Наступний сценарій демонструє запуск процесу (notepad.exe) в максимізувати вікні:

Слід зауважити, що при запуску процесу вищеописаними способами (за допомогою класу Win32_Process) на віддаленому комп'ютері виключається можливість інтерактивної взаємодії користувача з запущеною програмою. Якщо програма відкриває на віддаленому комп'ютері візуальне вікно, це вікно ніколи не буде доступно (вікно буде завжди невидимим). Таким чином, на віддаленому комп'ютері даний спосіб має сенс використовувати лише для пакетного запуску програм.

Щоб запустити на виконання vb- або js-скрипт на віддаленому комп'ютері, при виклику методу Create () використовуйте командний рядок типу "wscript.exe c: \ filename.vbs", при цьому запускається файл сценарію повинен бути розташований на локальному диску віддаленого комп'ютера.

Наступний сценарій демонструє можливість примусового завершення процесів з використанням методу Terminate (). Замінивши точку в WMI-монікере на потрібне ім'я комп'ютера, ви можете примусового завершувати процеси на будь-якому комп'ютері в локальній мережі. Сценарій завершує всі процеси notepad.exe, якщо такі є:

Клас Win32_ScheduledJob дозволяє запускати процеси, роблячи можливим при цьому інтерактивну взаємодію з користувачем (в т.ч. на віддаленому комп'ютері). Наприклад, наступний сценарій призведе до запуску calc.exe на зазначеному (в даному випадку - локальному) комп'ютері через хвилину після поточного часу, створивши разове завдання, яке буде виконано під користувачем SYSTEM. Вікно програми, що запускається при цьому буде доступно для інтерактивної взаємодії з поточним користувачем, який працює на зазначеному комп'ютері в даний момент.

Для більш детального знайомства з класом Win32_ScheduledJob звертайтеся до MSDN.







Схожі статті