Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СПО_1 / лаб / СПО_лаб

.pdf
Скачиваний:
17
Добавлен:
03.03.2016
Размер:
340.28 Кб
Скачать

3 – SW_SHOWMAXIMIZED – вікно відображується розгорнутим і активується

4 – SW_SHOWNOACTIVATE – вікно відображується але не активується;

X – відступ для вікна програми в пікселях по горизонталі від верхнього лівого кута;

Y – відступ для вікна програми в пікселях по вертикалі від верхнього лівого кута;

XSize – ширина вікна в пікселях;

YSize – висота вікна в пікселях.

Для отримання інформації про потоки в WMI використовується клас

Win32_Thread.

Основні властивості класу Win32_Thread:

ElapsedTime – загальний час виконання потоку;

Priority – динамічний пріоритет потоку;

PriorityBase – базовий пріоритет потоку;

ProcessHandle – ідентифікатор процесу, що створив потік;

ThreadState – поточний стан потоку:

0 – Initialized – створення

1 – Ready – готовність

2 – Running – виконання

3 – Standby – потік вибрано для виконання

4 – Terminated – завершення

5 – Waiting – очікування

6 – Transition – очікування звільнення стека ядра

7 – Unknown – невідомий стан;

ThreadWaitReason – причина очікування (визначено при

ThreadState=6).

11

Розглянемо використання деяких методів класу Win32_Process на прикладах. У лістингах 1.3 і 1.4 наведені приклади сценаріїв створення процесу за допомогою методу Create(). У лістингу 1.5 наведено приклад сценарію що знищує всі процеси "notepad.exe" за допомогою методу Terminate().

Лістинг 1.3. Запуск процесу “notepad.exe”

set obj = GetObject("WinMgmts:Win32_Process") err = obj.Create("notepad.exe", null _

null, ProcessId)

У першому рядку цього сценарію отримуємо доступ до класу

Win32_Process. У другому рядку створюється новий процес "notepad.exe".

Після створення процесу в змінній буде міститися ProcessId ідентифікатор нового процесу.

Лістинг 1.4. Запуск процесу “notepad.exe” з встановленням

початкових параметрів запуску

set WMI = GetObject("WinMgmts:")

set objStartup = WMI.Get("Win32_ProcessStartup") set objConfig = objStartup.SpawnInstance_ objConfig.ShowWindow = 3

set objProcess = WMI.Get ("Win32_Process") err = objProcess.Create("notepad.exe", null _

objConfig, ProcessId)

Тут в другому рядку за допомогою методу SwbemServices.Get()

отримуємо покажчик на об'єкт SwbemObject, що відповідає класу

Win32_ProcessStartup. Далі, за допомогою методу SpawnInstance_()

об'єкту SwbemObject створюється новий об'єкт відповідного класу. Потім

12

задається властивість ShowWindow цього об'єкту і створюється новий процес

“notepad.exe”.

Лістинг 1.5. Видалення всіх процесів “notepad.exe”

set WMI = GetObject("WinMgmts:") set objs = WMI.ExecQuery _

("SELECT * FROM Win32_Process " & _

"WHERE Name = 'notepad.exe'")

for each obj in objs obj.Terminate()

next

У рядку 2 даного прикладу використовується метод ExecQuery об'єкту

SwbemServices. Даний метод за допомогою запиту на мові WQL (WMI

Query Language) формує колекцію екземплярів класу Win32_Process. Далі в циклі for для кожного об'єкту з цієї колекції виконується метод

Terminate().

Хід роботи

1.Скласти сценарій для отримання списку властивостей для заданого класу (таблиця 1).

2.Скласти сценарій збору відомостей про підключені пристрої, згідно варіанту (таблиця 1).

3.Скласти сценарій запуску процесу згідно варіанту (таблиця 2).

Вивести наступну інформацію про запущений процес:

a)шлях до виконуваного файлу процесу;

b)час початку виконання процесу;

c)пріоритет процесу;

d)ідентифікатор процесу;

13

e)кількість активних потоків процесу;

f)інформацію про активні потоки:

-ідентифікатор процесу, що створив потік;

-динамічний пріоритет потоку;

-базовий пріоритет потоку;

-загальний час виконання потоку;

-стан потоку.

 

4.

Скласти сценарій збору інформації

про процеси згідно

варіанту (таблиця 3).

 

 

5. Вивчити можливості примусового завершення процесів.

 

а) Скласти сценарій що завершує всі процеси “notepad.exe” що мають

низький пріоритет (Idle).

 

 

б) Скласти сценарій що завершує роботу всіх програм, запущених

користувачем з Windows Commander (Total Commander).

 

 

 

 

Таблиця 1.1

 

 

 

Варіанти завдань

 

 

 

 

 

 

 

 

Завдання

Клас

в-та

 

 

 

 

 

 

 

 

 

 

1

 

Отримати інформацію про процесор:

Win32_Processor

 

 

-

виробник;

 

 

 

-

назва;

 

 

 

-

тактова частота;

 

 

 

-

підтримка Power Management.

 

 

 

 

 

2

 

Отримати інформацію про відеокарту:

Win32_VideoController

 

 

-

виробник;

 

 

 

-

назва;

 

 

 

-

об'єм відеопам'яті.

 

 

 

 

 

 

 

 

 

 

14

 

Завдання

Клас

в-та

 

 

 

 

 

 

 

3

Отримати інформацію про клавіатуру:

Win32_Keyboard

 

-

опис;

 

 

-

кількість функціональних клавіш.

 

 

 

 

4

Отримати інформацію про мережеву карту:

Win32_NetworkAdapter

 

-

назва;

 

 

-

тип адаптера;

 

 

-

MAC адреса.

 

 

 

 

5

Отримати інформацію про відеокарту:

Win32_VideoController

 

-

горизонтальний дозвіл;

 

 

-

вертикальний дозвіл.

 

 

 

 

6

Отримати інформацію про мишу:

Win32_PointingDevice

 

-

тип пристрою;

 

 

-

кількість кнопок.

 

 

 

 

7

Отримати інформацію про відеокарту:

Win32_VideoController

 

-

частота оновлення;

 

 

-

кількість кольорів, що відображуються;

 

 

-

тип конвертера DAC.

 

 

 

 

8

Отримати інформацію про жорсткий диск:

Win32_DiskDrive

 

-

модель;

 

 

-

кількість розділів;

 

 

-

об'єм;

 

 

-

інтерфейс.

 

 

 

 

9

Отримати інформацію про BIOS:

Win32_BIOS

 

-

виробник;

 

 

-

назва;

 

 

-

версія.

 

 

 

 

 

 

 

 

15

 

Завдання

 

 

Клас

в-та

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

Отримати інформацію про операційну систему:

Win32_OperatingSystem

 

-

назва;

 

 

 

 

 

-

номер збірки;

 

 

 

 

 

-

дата інсталяції.

 

 

 

 

 

 

 

 

 

 

 

11

Отримати інформацію про жорсткий диск:

Win32_DiskDrive

 

-

кількість циліндрів;

 

 

 

 

 

-

кількість голівок;

 

 

 

 

 

-

кількість секторів;

 

 

 

 

 

-

кількість доріжок.

 

 

 

 

 

 

 

 

 

 

 

12

Отримати інформацію про систему:

Win32_ComputerSystem

 

-

назва;

 

 

 

 

 

-

об'єм пам'яті;

 

 

 

 

 

-

ім'я користувача.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблиця 1.2

 

 

Варіанти завдань для запуску процесу

 

 

 

 

 

 

 

Застосування

 

Пріоритет

 

Стан вікна

 

в-та

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

MS Word

 

Idle

 

Normal

 

 

 

 

 

 

 

 

2

 

MS Excel

 

Normal

 

Minimized

 

 

 

 

 

 

 

 

3

 

MS Access

 

High

 

Maximized

 

 

 

 

 

 

 

 

4

 

MS Word

 

Normal

 

Normal

 

 

 

 

 

 

 

 

5

 

MS Excel

 

High

 

Minimized

 

 

 

 

 

 

 

 

6

 

MS Access

 

Idle

 

Minimized

 

 

 

 

 

 

 

 

7

 

MS Word

 

High

 

Normal

 

 

 

 

 

 

 

 

8

 

MS Excel

 

Idle

 

Normal

 

 

 

 

 

 

 

 

9

 

MS Access

 

Normal

 

Maximized

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

 

 

Застосування

Пріоритет

 

Стан вікна

в-та

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

MS Word

Idle

 

Maximized

 

 

 

 

 

 

 

11

 

 

MS Excel

Normal

 

Normal

 

 

 

 

 

 

 

12

 

 

MS Access

High

 

Normal

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблиця 1.3

 

 

 

Варіанти завдань для збору інформації про процеси

 

 

 

 

 

 

 

 

 

 

Завдання

 

в-та

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Визначити процеси, що мають найбільше число активних потоків

 

 

 

2

 

Визначити процес, що використовує найбільший об'єм віртуального

 

 

адресного простору у нинішній момент часу

 

 

 

 

3

 

Визначити процес, що має найбільший об'єм прочитаних даних

 

 

 

4

 

Визначити процес, що має найбільший об'єм записаних даних

 

 

 

5

 

Визначити процес, що використовує найбільшу частину файлу підкачки

 

 

у нинішній момент часу

 

 

 

 

 

 

 

6

 

Визначити процеси, що мають найбільший пріоритет

 

 

 

 

7

 

Визначити процес, що має найбільший максимальний об'єм віртуального

 

 

адресного простору, який використовувався процесом одночасно

 

 

 

8

 

Визначити процес, що має найбільший максимальний об'єм частини

 

 

файлу підкачки, яке використовувалося процесом за час його роботи

 

 

 

 

9

 

Визначити процеси, що мають найменший пріоритет

 

 

 

 

10

 

Визначити процес, що має найбільше значення максимального об'єму

 

 

використовуваної фізичної пам'яті

 

 

 

 

11

 

Визначити процеси, яким доступна найбільша максимальна кількість

 

 

сторінок пам'яті

 

 

 

 

 

 

12

 

Визначити процес, що має найменше значення максимального об'єму

 

 

використовуваної фізичної пам'яті

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

Контрольні запитання

1.Призначення технології Windows Management Instrumentation (WMI).

2.Яким чином відбувається підключення до служби WMI в сценаріях

VBScript?

3.Метод InstancesOf() об'єктів класу SWbemServices.

4.Що передається як параметр методу InstancesOf()?

5.Як відбувається запуск сценаріїв VBScript в Windows?

6.Для чого призначений метод GetObject() об'єктів класу

SWbemServices? Параметри методу.

7.Які об'єкти WMI відповідають кожному процесу Windows?

8.Створення і завершення процесу. Початкові параметри запуску процесу.

9.Які об'єкти WMI представляють потоки Windows?

10.Метод Get() объектів класу SWbemServices.

11.Метод ExecQuery(). Запити на мові WQL.

18

Лабораторна робота № 2

Обробка подій в WMI

Мета роботи: навчитися обробляти часові події WMI у вигляді сценаріїв на мові VBScript.

Вступ

Усередині WMI реалізована служба роботи з подіями - WMI Event

Service. Ця служба підтримує фільтрацію подій і забезпечує їх обробку.

Для того, щоб зареєструвати подію і мати можливість її обробляти,

необхідно за допомогою методу ExecNotificationQuery об'єкту

SWbemServices виконати запит WQL по спеціальній формі, наприклад:

Set colMonitorProcess = _

objWMIService.ExecNotificationQuery _

("SELECT * FROM __InstanceOperationEvent " & _

"WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")

Даний запит WQL повертає екземпляри класу

__InstanceOperationEvent (з двома підкресленнями), які формуються при кожному створенні, видаленні або модифікації екземпляра WMI класу.

Оператор WITHIN визначає інтервал часу в секундах між опитами. WITHIN 1

говорить про те, що опит проводитиметься кожну секунду. За допомогою конструкції WHERE відбувається фільтрація події, при цьому оператор ISA

вказує необхідні події. У наведеному вище прикладі відбувається фільтрація подій, для яких властивість TargetInstance класу

__InstanceOperationEvent це екземпляр класу Win32_Process.

Клас __InstanceOperationEvent є батьківським для всіх подій що викликаються екземплярами WMI класів. Нащадки цього класу:

19

__InstanceCreationEvent створюється при створенні нового

екземпляра WMI класу;

__InstanceModificationEvent – створюється при модифікації

існуючого екземпляра класу;

__InstanceDeletionEvent – створюється при знищенні

екземпляра класу.

При запиті __InstanceOperationEvent повертаються всі

екземпляри цих трьох класів.

Метод ExecNotificationQuery повертає об'єкт класу

SWbemEventSource, в якому описаний єдиний метод NextEvent. Цей метод чекає появи події, що задовольняє умові запиту, і при його появі,

повертає стандартний об'єкт SWbemObject, який представляє подію. Для отримання доступу до об'єкту, який викликав цю подію, використовується його властивість TargetInstance (Лістинг 2.1).

Лістинг 2.1. Обробка одиночної події.

Set objWMIService = GetObject("winmgmts:")

Set colMonitorProcess = _

objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceOperationEvent " _

&" WITHIN 1 WHERE TargetInstance ISA " _

&"'Win32_Process'")

WScript.Echo "Чекання події ..."

Set objLatestEvent = colMonitorProcess.NextEvent WScript.Echo objLatestEvent.Path_.Class Wscript.Echo "Process Name: " & _

objLatestEvent.TargetInstance.Name Wscript.Echo "Process ID: " & _

objLatestEvent.TargetInstance.ProcessId

20