На 95 балів потрібно розробити програму згідно варіанту

Програми розробляються в MASM32. Результат виводиться на екран консолі. Розробити програму, яка

1. виводить імена процесів у вигляді:
“ім’я батьківського процесу” -> “ім’я породженого процесу”

2. з допомогою функції GetCommandLine приймає назву процеса з командної стрічки, який необхідно завершити і завершує його.

3. кожну сек. перевіряє чи не з’явився процес з назвою “mirc”, при появі такого процесу програма повинна видавати звуковий сигнал.

4. повинна виводити імена модулів, які використовуються всіма процесами в системі.

5. виводить пріоритети для всіх потоків зареєстрованих в системі.

6. кожну сек. (використовуючи функцію Sleep)  перевіряє чи не завершився процес з деяким іменем, а коли завершився видає повідомлення.

7. друкує на екран назву класу пріоритету для процеса, ідентифікатор якого задано в командному рядку (“Найнижчий” - IDLE_PRIORITY_CLASS, “Нормальний” - NORMAL_PRIORITY_CLASS, “Високий” - HIGH_PRIORITY_CLASS, “Найвищий” - REALTIME_PRIORITY_CLASS).

8. з командної стрічки приймає два параметри: ідентифікатор процесу і число, яке визначає клас пріоритету (0 - IDLE_PRIORITY_CLASS, 1 - NORMAL_PRIORITY_CLASS, 2 - HIGH_PRIORITY_CLASS, 3 - REALTIME_PRIORITY_CLASS). Програма повинна змінити пріоритет виконання заданого процесу на вказаний в другому параметрі.

9. інтерактивно записує в файл зміни в списку процесів у вигляді:
дд.мм.рррр гг:хх:сс запустився/завершився “назва процесу”

10. інтерактивно записує в файл зміни кількості потоків у вигляді:
дд.мм.рррр гг:хх:сс “назва процесу” кількість_потоків

 




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

1. Назвати функцію і параметри для створення списку процесів та потоків.

2. Назвати функції перегляду процесів.

3. Які функції викликаються для перегляду модулів?

4. Де зберігається ідентифікатор процесу повернутий функцією Process32First?

5. Як визначити всі потоки створені заданим процесом?

6. Що необхідно зробити для керування процесом?

 

Список використаної літератури

1. Help по функціях API - www.nan32asm.cjb.net

2. Microsoft Windows Help - Win32 Programmers Reference

3. Технічна документація Microsoft - MSDN
Додаток 1

Текст програми виводу імен запущених процесів в системі.

.386

.model flat,stdcall

include c:\masm32\include\windows.inc

include c:\masm32\include\kernel32.inc

include c:\masm32\include\user32.inc

include c:\masm32\include\masm32.inc

includelib c:\masm32\lib\kernel32.lib

includelib c:\masm32\lib\user32.lib

includelib c:\masm32\lib\masm32.lib

 

.data

Caption_s db "Process",0

Snapshot dword?

Text_s       db 1024 dup (?)

PID_s  db 25 dup (?)

PID_f  db "%u ",0

CRLF_s       db 13,10,0

lstPTR       dword offset Text_s

ProcEntry PROCESSENTRY32 <sizeof(PROCESSENTRY32)>

 

.code

wrtdown_str proc

mov ebp, [lstPTR]; Remember the last position

 

@@c: mov al, [edx]; Take a letter from [edx]

mov [ebp], al; write the letter to [ebp]

or al, al      ; compare the letter with zero

jz @@end ; if it is zero then it is end of line

inc ebp   ; else increase ebp and edx

inc edx

jmp @@c   ; loops to @@c

 

@@end: mov [lstPTR], ebp; Store the last position

ret

wrtdown_str endp

 

start:

 

invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS, NULL

; now eax contains the snapshot handle

mov [Snapshot], eax

invoke Process32First, eax, addr ProcEntry

; now the ProcEntry contains information about the first process

 

@@a: invoke wsprintf, addr PID_s, addr PID_f, ProcEntry.th32ProcessID

mov edx, offset PID_s

call wrtdown_str

mov edx, offset ProcEntry.szExeFile

call wrtdown_str

mov edx, offset CRLF_s

call wrtdown_str

mov eax, [Snapshot]

invoke Process32Next, eax, addr ProcEntry

cmp eax, FALSE

jne @@a

     

mov eax, [Snapshot]

invoke CloseHandle, eax; closes the snapshot handle

; invoke MessageBox, 0, addr Text_s, addr Caption_s, MB_OK

invoke StdOut, addr Text_s

; prints the process list in message box

invoke ExitProcess, 0; exits the program

end start

 

 


Результат

0 [System Process]

8 System

140 SMSS.EXE

168 CSRSS.EXE

188 WINLOGON.EXE

216 SERVICES.EXE

228 LSASS.EXE

416 svchost.exe

448 spoolsv.exe

496 svchost.exe

512 kavsvc.exe

552 sqlservr.exe

624 regsvc.exe

644 mstask.exe

688 WinMgmt.exe

764 svchost.exe

1012 explorer.exe

1184 UMSD.EXE

704 kav.exe

968 internat.exe

480 acrotray.exe

1072 sqlmangr.exe

520 CMD.EXE

116 CMD.EXE

308 notepad.exe

588 ps.exe



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

 

Тема: Робота з реєстром ОС Windows засобами Win32 API.

Мета: Навчитись переглядати і редагувати реєстр ОС Windows в програмному режимі засобами пакету MASM32.

 

Основні теоретичні відомості

Основні поняття

П'яте видання словника Microsoft Computer Dictionary визначає реєстр так:

Реєстр – ієрархічно побудована, централізована база даних в складі операційних систем Microsoft Windows 9x, Windows CE, Windows NT і Windows 2000, яка містить дані, що використовуються для конфігурації операційної системи для роботи з користувачами, програмними продуктами та пристроями.

http://support.microsoft.com/?scid=kb%3Bru%3B256986&x=0&y=3

Реєстр Windows зберігає дані в ієрархічно структурованому дереві. Кожен вузол у цьому дереві називається ключем (key). Кожен ключ може містити значення (value) та інші ключі. Зазвичай один ключ в реєстрі містить всі дані, необхідні одній програмі. Програма відкриває потрібний ключ і використовує значення асоційовані з ним. Ключ може містити довільну кількість значень в будь-якому форматі.

Кожен ключ має ім’я, яке складається з одного або більше ANSI символів — тобто символи з кодами від 32 до 127. Імена ключів не можуть містити пробілів, зворотних слешів (\) або групових символів (* і?). Імена ключів, які починаються з крапки (.) є зарезервованими. Ім’я кожного підключа є унікальним. Імена ключів не перекладаються в локалізованих версіях операційної системи, однак значення можуть бути перекладеними на інші мови.

Для того, щоб добавити нові дані до реєстру програма повинна відкрити ключ. Щоб відкрити ключ, необхідно застосувати дескриптор іншого ключа реєстру, який вже відкритий. Система оголошує стандартні дескриптори ключів, які завжди відкриті. Кожна програма може використовувати ці відкриті ключі в якості вхідних точок до реєстру.

Система забезпечує два відкриті ключі в корені реєстру: HKEY_LOCAL_MACHINE та HKEY_USERS. Додатково, система надає доступ до HKEY_CLASSES_ROOT (підключ HKEY_LOCAL_MACHINE) і HKEY_CURRENT_USER (підключ HKEY_USERS). Дані дескриптори є дійсними для всіх реалізацій реєстру Win32. Також деякі додаткові відкриті дескриптори появилися для певних платформ.

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

Наступні стандартні відкриті ключі використовуються як точки входу в реєстр.

Точка входу Використання
HKEY_CLASSES_ROOT Частини реєстру які входять до цього ключа оголошують типи (або класи) документів і властивості асоційовані з цими типами. Інформація, яка зберігається під цим ключем використовується програмами-оболонками (shell applications) і програмами, які працюють із зв’язуваними і вбудовуваними об’єктами (OLE).
HKEY_CURRENT_USER Частини реєстру за цим ключем оголошують настройки поточного користувача. Ці настройки включають змінні середовища, дані про групи програм, кольори, прінтери, мережеві з’єднання, автозавантажувані програми і користувацькі настройки програм.
HKEY_DYN_DATA Для Windows 95іWindows 98: розділи реєстру за цим ключем дозволяють нагромаджувати дані про роботу системи.
HKEY_LOCAL_MACHINE Розділи реєстру під цим ключем описують технічні характеристики комп’ютера, включаючи інформацію про тип шин, системну пам’ять, встановлене апаратне і програмне забезпечення.
HKEY_PERFORMANCE_DATA Для Windows NT: розділи реєстру цього ключа дозволяють звертатися до інформації про швидкодію системи. Насправді ця інформація безпосередньо не зберігається в реєстрі; виклик певних функцій реєстру призводить до збору запитуваної інформації.
HKEY_USERS Частини реєстру за цим ключем оголошують користувацьку конфігурацію по замовчуванню для нових користувачів комп’ютера і користувацьку конфігурацію для поточного користувача. 

 

Категорії даних

 

Перед записом даних в реєстр, програма повинна розділити дані на дві категорії: комп’ютерно-орієнтовані дані і користувацько-орієнтовані. Таке розрізнення дозволяє програмі підтримувати різні настройки для різних користувачів і навіть розміщувати користувацько-орієнтовані дані в мережі, реалізуючи незалежний від розміщення користувацький профіль. (користувацький профіль – це набір конфігураційних даних кожного користувача.)

Коли програма інсталюється, вона повинна записати комп’ютерно-орієнтовані дані за ключем HKEY_LOCAL_MACHINE. Як правило програма створює ключі для імені компанії, імені продукту, та номеру версії, як показано в наступному прикладі:

HKEY_LOCAL_MACHINE \ Software \MyCompany\MyProduct\1.0

 Якщо програма підтримує OLE, вона повинна записати відповідні дані в HKEY_LOCAL_MACHINE\Software\Classes.

Кожна програма повинна записати користувацько-орієнтовані дані за ключем HKEY_CURRENT_USER, як показано в прикладі:

HKEY_CURRENT_USER \ Software \MyCompany\MyProduct\1.0\ ...


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: