Вступ
реєстр програмування алгоритм windows
Темою курсового проекту є розробка програмного додатку зчитування даних з реєстру ОС Windows.
Методом дослідження курсової роботи є аналіз та обробка літератури, в якій висвітлюється потрібне нам питання. До складу літератури входять підручники, журнали, довідкова та наукова література. Такий метод дослідження дозволяє отримати відносно цілісне уявлення про дану проблему.
Курсовий проект складається з вступу, основної частини та висновку. Основна частина містить 3 розділи.
В першому розділі розглядається Опис предметної області. Перший розділ дає змогу уявити про реєстр ОС Windows 7. Також розглядаються структура реєстру ОС Windows 7. Крім того описуються роль реєстру в ОС Windows 7.
В другому розділі описується Робота з реєстром ОС Windows У другому розділі наводиться структура Windows-додатку. Також описані функції WinAPI роботи с реєстром. Крім того приводиться інформація, про REG-файл. В третьому розділі розглядаємо розробку програмного додатку зчитування даних з реєстру ОС Windows. Також розглядається вибір середовища програмування, крім того приводиться інформація про алгоритм задачі.
Така структура курсової
роботи дозволяє найбільш повно розкрити обрану тему.
1. Опис предметної області
.1 Постановка
завдання
У даному курсовому проекті необхідно вивчити теоретичний матеріал з теми Розробка програмного додатку зчитування даних з реєстру, описати алгоритм програми і реалізувати його за допомогою мови низького рівня асемблера. Програма повинна виконуватися в операційній системі Windows, тобто мати графічний інтерфейс і відповідати структурі Windows-додатку. Програмний продукт має виконувати такі функції:
відкривати ключ реєстру;
отримувати інформацію про ключ реєстру;
повертати тип та дані вказаного значення по імені;
зберігати дані в полі відкритого ключа реєстру;
створювати зазначений ключ;
звільняти дескриптор
зазначеного ключа.
1.2 Реєстр ОС Windows 7
Реєстр - це база даних Windows. Вона містіть відомості, без яких нормальна робота в системі неможлива. Тут є дані про обладнання та програмах і їх параметрах, про профілі облікових записів користувачів комп'ютерів. Операційна система й інше програмне забезпечення (ПЗ) постійно працюють з реєстром. Реєстр, крім того є частою мішенню для шкідливого ПЗ. Реєстр є важливим компонентом, в якові не слід вносити зміні без крайньої споживи. Проте в деяких випадках без втручання в реєстру не обійтися.
Отже, якщо реєстр - це база даних Windows, то потрібен певний інструмент для роботи з даною базою. Таким інструментом в Windows є Редактор реєстру. Зверніть увагу, що ярлик цієї програми ви не знайдете на Робочому столі, а також в меню кнопки Пуск. Звичайний користувач не повинен знати про існування даної програми. Тому поступимо таким чином. Натиснемо кнопку Пуск і в рядку пошуку наберемо слово regedit. Ви побачите в розділі Програми пункт regedit.exe - це і є файл редактора реєстру Windows.
Тепер розглянемо саму програму. Її інтерфейс нагадує Провідник. Зліва ви бачите ієрархічне дерево зі значками папок - це розділи реєстру. Як і у випадках з звичайними папками, які можуть містити вкладені папки, розділи можуть мати вкладені підрозділи. У правій частині редактора ми бачимо назви параметрів, тип параметрів і їх значення. Розглянемо елементи реєстру докладніше.
Незважаючи на те, що розробники Microsoft свого часу доклали максимум зусиль, щоб підвищити як швидкість завантаження Windows Vista, так і її продуктивність, багато користувачів продовжували нарікати, що їх очікування щодо цього не виправдалися. Часто можна було почути, що Windows XP SP3 істотно швидше, ніж Vista. Навіть поява продуктів Service Pack 1 і 2 для Windows Vista цього розчарування не зменшили. Саме тому при розробці Windows 7 продуктивність була поставлена, так би мовити, у главу кута. Вже ранні бета-версії Windows 7 і завантажувалися істотно швидше, і в процесі роботи демонстрували значно вищу продуктивність, ніж Windows Vista і Windows XP. За рахунок чого ж це було досягнуто? В основному - за рахунок зведення до мінімуму кількості сервісів, що стартують при запуску системи, кількості дискових операцій, операцій читання і запису в реєстр і індексованих файлів. Що ще важливіше, Windows 7 не тільки серйозно підвищує продуктивність, але і відрізняється від своїх попередниць набагато більш ефективним енергоспоживанням. Починаючи з Windows 7, у системних сервісів з’явилася можливість триггерного запуску (triggered startup). Це означає, що тепер для сервісу немає необхідності постійно працювати у фоновому режимі з метою моніторингу подій, як це було в більш ранніх версіях Windows. У Windows 7 сервіси можуть стартувати тільки при настанні певних подій. Розробники програмного забезпечення мають можливість конфігурування тригерів і розробки своїх сервісів у відповідності з цими новими вимогами. До теперішнього часу в Інтернеті вже з’явилося безліч статей, що пропонують огляди та порівняльний аналіз продуктивності Windows 7, Windows Vista і Windows XP2. І з кожним днем з’являються все нові і нові огляди, які в більшості своїй підтверджують сказане - так, Windows 7 дійсно є найшвидшою з усіх операційних систем Microsoft, існуючих на сьогоднішній день. Оптимальна настройка і конфігурація системи дозволять вам змусити її працювати ще швидше і буквально вичавити з неї максимум.
Сама по собі концепція
реєстру не нова для Windows. Проте сучасний реєстр - це гігантський крок вперед
у досягненні керованості всієї системи в цілому з єдиного джерела -
реєстраційної бази даних (registry database). Ця база даних і є основним
сховищем всіх мережевих, системних і користувальницьких параметрів налаштування
Windows. Нагадаємо, що в еру панування MS-DOS і ранніх версій Windows (які
представляли собою просто надбудову над MS-DOS) всі програми зберігали
конфігураційну інформацію в ініціалізації файл (INI-файлах). Ними служили
звичайні файли формату ASCII, які були доступні кожному і могли редагуватися
будь-яким текстовим редактором. Першою операційною системою з сімейства
Windows, що одержала широке поширення, стала Microsoft Windows 3.11. Саме в ній
з’явився зачаток сучасного реєстру - файл Reg.dat. Втім, в Windows 3.1 цей
зародковий реєстр цілком мирно співіснував з традиційними файлами налаштувань.
1.3 Роль реєстру в ОС
Windows 7
Буває така проблема, коли важливу роботу необхідно зробити терміново, але на екрані з’являються дивні і «лякаючи» повідомлення, що інформують про неможливість завантаження операційної системи через те, що реєстр пошкоджений. А адже з такою проблемою час від часу стикаються всі люблячі експерименти користувачі операційних систем з сімейства Windows NТ. Це було справедливо для Windows NT/2000/XP і це залишилося в силі як для Windows Vista, так і для Windows 7. В Windows Vista виводяться на екран повідомлення, яке стало більш інформативними, і в Windows 7 ця тенденція була продовжена. І хоча середовище відновлення після збоїв (Windows Recovery Environment, WinRE) стала в останніх версіях Windows істотно могутніше і зручніше, ніж Консоль відновлення (Recovery Console), Windows 2000/XP чітко демонструють, що навіть єдина помилка в системному реєстрі може вплинути на всю системну конфігурацію і запросто перешкодити завантаженні.
Так само, як і в більш ранніх версіях Windows, в Windows 7 є додатки, налаштувати які можна тільки шляхом конфігурування системного реєстру. Саме тому важливо знання архітектури реєстру, його внутрішнього устрою, а також наявність практичних навичок роботи з ним.
Реєстр складний для
розуміння і розшифровки, однак він являє собою найважливіший компонент
будь-якої сучасної операційної системи з сімейства Windows. Windows 7, як і
будь-яка інша операційна система з лініїки Windows NT, працювати без нього не
зможе. Реєстр - це централізована база даних, яка зберігає всі налаштування
операційної системи і працюючих у ній додатків. У цьому сенсі реєстр
аналогічний різноманітним INI-файлів, а також файлів Autoexec.bat і Config.sys,
які існували в ранніх версіях Windows. Реєстр містить інформацію про всі
апаратних пристроях, включаючи пристрої Plug and Play (PnP), дані OLE,
відомості про розширення імен файлів, всіх системних компонентах і працюючих в
системі додатках, мережеві параметри, інформацію безпеки і т. п. Узагальнено
кажучи, якщо на комп’ютері є програмний або апаратний компонент, який так чи
інакше впливає на його роботу, то інформація про нього зберігається і в
реєстрі. Спрощена схема, що демонструє системні компоненти та їх взаємодія з
реєстром, наведена на рисунку 1.3.
Рисунок 1.1 - Спрощена схема
системних компонентів реєстру ОС Windows 7
Як правило реєстр можна розглядати як записну книжку Windows - як тільки системі потрібна якась інформація, то вона шукає її в реєстрі. Реєстр дуже обширний і дати однозначне його визначення неможливо. Приблизно, Реєстр - компонент ОС комп’ютера, який в ієрархічній базі даних зберігає найважливіші установки та інформацію про додатки, системних операціях і користувальницької конфігурації. Реєстр виконує такі основні функції:
відстежує всі системні пристрої та їх установки;
працює як база даних, яка уніфікує функціонування додатків;
перевіряє наявність необхідних драйверів для інсталюємого обладнання;
надає системні сервіси, які необхідні для роботи багатьох програм;
забезпечує запуск необхідного додатку при клацанні мишею;
зберігає інформацію що відноситься до системних правилам.
Отже, розглянемо коротко, як компоненти Windows 7 використовують системний реєстр.
Програми установки - програма Windows 7 Setup при першому запуску збирає інформацію про систему і створює системний реєстр на основі зібраної інформації. Інші програми-установники, що виробляють установку драйверів або додатків, читають інформацію з системного реєстру і додають туди свою конфігурацію. Якщо програма-інсталятор розроблена коректно, то вона читає інформацію з системного реєстру і визначає, чи присутні в системі компоненти, необхідні для успішного завершення процесу інсталяції. Завдяки наявності системного реєстру як централізованої бази даних про всі програмних і апаратних компонентах, всі програми можуть спільно використовувати цю інформацію і більш успішно взаємодіяти один з одним. Будь-який додаток, що претендує на статус Designed for Windows 7, повинно реєструвати свої конфігураційні дані в системному реєстрі і надавати коректно працюючу утиліту деінсталяції. Збережена в реєстрі реєстраційна інформація додатків дозволяє коректно виконати процедуру деінсталяції, що не видаляючи спільно використовуваних компонентів (DLL, OCX і т. п.), які можуть бути необхідні для роботи інших додатків.
Менеджер завантаження Windows - в порівнянні з попередніми версіями систем з сімейства Windows NT послідовність завантаження Windows, починаючи з Windows Vista, зазнала змін. Більш докладно ці питання будуть розглядатися в розділі 7, поки ж досить відзначити, що Диспетчер завантаження (файл Bootmgr) отримує доступ до бази даних BCD (Boot Configuration Data), яка, як уже говорилося, зберігається в реєстрі. Після читання конфігураційних даних завантаження Менеджер завантаження передає управління завантажувач Windows - файлу Winload.exe, який, в першу чергу, читає необхідні дані з реєстру, а потім завантажує в пам’ять ядро операційної системи (% system32% \ ntoskrnl.exe) і рівень апаратних абстракцій (% system32% \ hal.dll), а також всі драйвери початкового завантаження і DLL режиму ядра. Ось чому в разі відсутності або пошкодження файлів реєстру операційна система просто не завантажиться.
Диспетчер PnP (PnP
Manager) - компонент режиму ядра, що вперше з’явився в Windows 2000. Диспетчер
PnP виконує виявлення пристроїв і їх ідентифікацію за так званим
ідентифікатором постачальника (vendor ID, VID) і ідентифікатором пристрої
(device ID, DID). Комбінація цих двох чисел унікальним чином визначає пристрій.
Виявивши унікальну комбінацію VID і DID, Диспетчер PnP запрошувати з реєстру
інформацію про шину, на якій виявлено пристрій, і перевіряє, чи встановлений
драйвер для цього пристрою. Якщо драйвер пристрою ще не встановлений, то
Диспетчер PnP інформує про це підсистему PnP режиму користувача. Ця підсистема
повинна виявити відповідний INF-файл для інсталяції драйвера і почати його
установку. У даному прикладі пристрій являв собою КПК, вперше підключений до
комп’ютера, що працює під управлінням Windows 7. Операційна система правильно
впізнала пристрій, почала установку його драйвера, після чого не минуло й
хвилини, як драйвер пристрою був встановлений, а саме воно - готово до роботи.
Після завершення установки драйвера відразу ж було запущено додаток Windows
Mobile Device Center, що пропонує почати роботу з даними КПК - виконати
синхронізацію даних або почати обмін файлами без синхронізації. Таким чином,
незважаючи на те, що процес установки нового обладнання за умови його
сумісності з Windows 7 відбувається автоматично, насправді системний реєстр
активно бере участь у цьому процесі.
1.4 Структура реєстру
Для розуміння логічної структури реєстру найпростіше провести аналогію зі структурою файлової системи на диску. Реєстр містить ключі (keys), які аналогічні каталогом, і параметри (values), які можна порівняти з файлами, що зберігаються на диску. Ключі реєстру є контейнери, у складі яких можуть міститися як вкладені ключі (subkeys), так і параметри. Параметри реєстру (як і файли) містять дані. Ключі, що знаходяться на верхньому рівні цієї ієрархічної структури, називаються кореневими ключами (root keys). Схема іменування ключів і параметрів реєстру також запозичується від схеми іменування шляхів до файлів і каталогів, прийнятої для файлової системи. Порівняйте, наприклад, типовий шлях до каталогу (WORK \ BHV) і типовий шлях до вкладеного ключу реєстру (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentСontrolSet). Реєстр Windows 7, як і реєстр Windows 2000/XP \ Vista, містить 5 кореневих ключів: HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS і HKEY_CURRENT_CONFIG.
Всі імена кореневих ключів починаються з рядка HKEY_, що вказує розробникам програмного забезпечення на те, що це - дескриптор, який може використовуватися програмою. Дескриптор (handle) - це значення, що застосовується для унікального опису ресурсу, до якого програма може отримати доступ.
Кореневі ключі реєстру:
HKEY_LOCAL_MACHINE;
HKEY_CLASSES_ROOT;
HKEY_CURRENT_CONFIG;
HKEY_CURRENT_USER;
HKEY_USERS.
Ключ HKEY_LOCAL_MACHINE містить глобальну інформацію про апаратні засоби і операційній системі, в тому числі: тип шини, системна пам’ять, драйвери пристроїв і керуючі дані, використовувані при запуску системи. Інформація, що міститься у складі цього ключа, діє стосовно всіх користувачам, які реєструються в системі. На верхньому рівні ієрархії реєстру для цього ключа є три псевдоніма: HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG і HKEY_DYN_DATA.
Ключ HKEY_CLASSES_ROOT містить асоціацію між додатками і типами файлів (з розширення імені файлу). Крім того, цей ключ зберігає інформацію OLE, асоційовану з об’єктами COM, а також дані по асоціаціям файлів і класів (еквівалент реєстру ранніх версій Windows, що служили налаштуванням над MS-DOS). Параметри цього ключа збігаються з параметрами, розташованими під ключем HKEY_LOCAL_MACHINE\ Software \ Classes. Детальну інформацію про ключ HKEY_CLASSES_ROOT можна знайти в керівництві OLE Programmers Reference, що входить до складу продукту Windows Platform Software Development Kit (SDK).
Ключ HKEY_CURRENT_CONFIG містить конфігураційні дані для поточного апаратного профілю. Апаратні профілі (Hardware profiles) представляють собою набори змін, внесених в стандартну конфігурацію сервісів і пристроїв, встановлену даними ключів Software і System кореневого ключа HKEY_LOCAL_MACHINE. У ключі HKEY_CURRENT_CONFIG відображаються тільки зміни. Параметри цього ключа з’являються також під ключем HKEY_LOCAL_MACHINE\System\CurrentControSet\HardwareProfiles\Current.
Ключ HKEY_CURRENT_USER містить профіль користувача, на даний момент зареєстрованого в системі, включаючи змінні оточення, настройку робочого столу, параметри налаштування мережі, принтерів і додатків. Цей ключ являє собою посилання на ключ HKEY_USERS\user_SID, де user_SID - ідентіфкатор безпеки (Security ID) користувача, зареєстрованого в системі на поточний момент.