
- •Список скорочень та термінів
- •Розділ 1. Cистемний реєстр ос Windows
- •1.1. Поняття про реєстр
- •1.2. Архітектура реєстру Windows
- •1.3. Основні гілки реєстру
- •Розділ 2. Алгоритм програми
- •2.1. Загальний вигляд алгоритму програми
- •2.2. Алгоритм підпрограми запуску моніторингу реєстру
- •2.3. Алгоритм запуску моніторингу реєстру
- •2.4. Алгоритм запуску потоку
- •2.5. Алгоритм зупинки моніторингу реєстру
- •Розділ 3. Принципи реалізації програми
- •3.1. Основні бібліотеки, використані в програмі
- •3.2. Основні функції, використані в програмі
- •3.3. Класи-вийнятки
- •3.4. Клас RegistryMonitor
- •Висновки
- •Список використаних джерел
- •Додаток а. Тестування програми
- •А.1. Робота програми з обліковим записом «Admin».
- •А.2. Робота програми з обліковим записом «User»
- •А.3. Роботи програми з невірним ключем реєстру
- •Додаток б. Інструкція по роботі з розробленим додатком
2.2. Алгоритм підпрограми запуску моніторингу реєстру
На рис. 4 зображено блок-схему, яка описує алгоритм підпрограми запуску.
Рис. 4 Блок-схема алгоритму підпрограми запуску моніторингу реєстру
Основні події, які відбуваються при натисканні кнопку «Start» - це створення нового об’єкту класу RegistryMonitir та запуск самого моніторингу.
2.3. Алгоритм запуску моніторингу реєстру
На рис. 5 зображено блок-схему алгоритму запуску моніторингу. В цьому алгоритмі реалізовано клас RegistryMonitor, виділено критичні області і запущено потік.
Рис.5 Блок-схема алгоритму запуску моніторингу реєстру
Запуск моніторингу реєстру відбувається так:
Користувач вказує назву гілки реєстру і ключ значення реєстру, натискає кнопку «Start».
Вказаний ключ значення реєстру перевіряється на правильність. Якщо вказаний ключ існує, то відкривається критична область. В іншому випадку виводиться повідомлення про відсутність такого ключа в реєстрі.
Вказаний ключ існує, відкривається критична область, в якій знаходяться потоки моніторингу. Якщо поток моніторигну існує, то він запускається. Якщо поток моніторингу не існує, то спочатку створюється новий клас моніторингу, а потім запускається поток.
2.4. Алгоритм запуску потоку
На рис. 6 зображено блок-схему реалізації алгоритму запуску потоку.В цьому алгоритмі реазовано підпрограми RegOpenKeyEx та RegCloseKeyEx , запущено фільтр, який провіряє на звернення вказані ключі реєстру і повідомляє про всі зміни у вказаних ключах.
Запуск потоку відбувається так:
Запуск підпрограми RegOpenKeyEx і перевірка вказаного ключа. Якщо ключ існує, то фільтр фіксує зміни, що відбулися в значенні реєстру даного ключа.
Якщо фільтр виявив зміни, то з’являється повідомлення Win32Exeption з резутьтатом змін.
Завершення потоку і запуск підпрограми RegCloseKeyEx.
Рис.6 Блок-схема алгоритму запуску потоку
2.5. Алгоритм зупинки моніторингу реєстру
На рис.7 зображено блок-схему алгоритму зупинки моніторингу реєстру.
Рис. 7 Блок-схема алгоритму зупинки моніторингу реєстру
Зупинка моніторингу реєстру відбувається так:
Після того, як користувач натиснув кнопку «Stop», виконується перевірка на проведення маніторингу.
Якщо моніторинг відбувався, то він зупиняється і виводиться повідомлення про зупинку моніторингу.
Розділ 3. Принципи реалізації програми
Реалізація додатку для моніторингу звернень до заданого значення/гілки реєстру в даній курсовій роботі представлена мовою програмування С#. Програма базується на основі бібліотек, класів, функцій, методів та параметрів цієї мови програмування.
3.1. Основні бібліотеки, використані в програмі
System.ComponentModel - надає класи, які використовуються для реалізації під час виконання і поведінки під час розробки компонентів і елементів управління. Цей простір імен включає в себе базові класи та інтерфейси для реалізації атрибутів і перетворювачі типів, зв'язування з джерелами даних, а також ліцензування компонентів [1].
Рис 8. Діаграма використаних компонентів простору імен System.ComponentModel
У таблиці 1 наведено назви та призначення використаних компонентів System.ComponentModel.
Таблиця 1. Опис використаних при реалізації програми компонентів System.ComponentModel
Назва |
Призначення |
EventHandler |
Делегат, що представляє метод, який обробляє подію без даних |
Win32Exeption |
Клас, який видає виняток про код помилки Win32 |
Exception |
Клас, який представляє помилки, що виникають під час роботи додатку. Наприклад, якщо у потоці не існує більше операції, яка має виконуватися |
System.IO - простір імен, містить типи, які дозволяють читання та запис файлів і потоків даних, і типи, які забезпечують основні файли і каталоги підтримки.[1]
Рис.9 Діаграма використаних компонентів простору імен System.ІО
У таблиці 2 наведено назви та призначення використаних компонентів System.ІО.
Таблиця 2. Опис використаних при реалізації програми компонентів System.ІО
Назва |
Призначення |
ErrorEventHandler |
Обробляє подію Error (помилку) |
ErrorEventArgs |
Надає дані для помилки |
System.Threading - простір імен, містить класи та інтерфейси, які дають можливість програмувати в багатопотоковому режимі. На додаток до класів для синхронізації потоків діяльності і доступу до даних ( м'ютекс , монітор , Interlocked , AutoResetEvent , і так далі), цей простір імен включає ThreadPool клас , що дозволяє використовувати пул системи поставляти теми, і таймер клас, який виконує зворотний виклик методів поставки теми потоку.[1]
Рис.10 Діаграма використаних компонентів простору імен System.Threading
У таблиці 3 наведено назви та призначення використаних компонентів System.Threading.
Таблиця 3. Опис використаних при реалізації програми компонентів System.Threading
Назва |
Призначення |
ThreadStart |
Метод, що виконує події класу Thread |
Thread |
Створює і контролює потік, задає пріоритет |
WaitHandler |
Інкапсулює пов’язані з ОС об’єкти, які очікують монопольного доступу до загальних ресурсів |
ManualResetEvent |
Повідомляє очікуючі потоки про те, що відбулася подія. Цей клас не успадковується |
System.Runtime.InteropServices - простір імен, надає широкий вибір членів, які підтримують COM-взаємодії і служби виклику некерованого коду.[1]
Рис.11 Діаграма використаних компонентів простору імен System.Runtime.InteropServices
У таблиці 4 наведено назви та призначення використаних компонентів System.Runtime.InteropServices.
Таблиця 4. Опис використаних при реалізації програми компонентів System.Runtime.InteropServices
Назва |
Призначення |
_thread |
Надає System.Threading тему класу в некерований код |
GC |
Забезпечує можливість доступу до керованого об’єкту з некерованою пам’яттю |
Microsoft.Win32 – простір імен, надає два типи класів: ті, які займаються подіями, викликаними операційною системою і ті, які маніпулюють системним реєстром.[1]
Рис.12 Діаграма використаних компонентів простору імен Microsoft.Win32
У таблиці 12 наведено назви та призначення використаних компонентів Microsoft.Win32.
Таблиця 5. Опис використаних при реалізації програми компонентів Microsoft.Win32
Назва |
Призначення |
RegistryHive |
Представляє можливі значення вузла верхнього рівня реєстру |
Registry |
Методи доступу до пари ключ/значення |
RegistryKey |
Представляє ключові рівні в реєстрі Windows. Інкапсуляція реєстру. |