Знайомство з реєстром Windows.
Реєстр Windows (Windows Registry) - це центральна база даних налаштувань і параметрів у всіх операційних системах сімейства Windows (починаючи з Windows 3.1). У ньому зберігається вся інформація про апаратні засоби, операційну систему і встановлених в ній додатках, а також призначені для користувача дані і настройки.За аналогією з людською анатомією я б назвав реєстр центральною нервовою системою комп'ютера, адже від налаштувань реєстру безпосередньо залежить поведінка системи в тій чи іншій ситуації.
Реєстру не є єдиним цілим, а представляє з себе складову структуру, динамічно формується з різних даних в такий спосіб:
- Спочатку, при установці ОС, створюються файли, що зберігають дані про початкової конфігурації системи.
- Потім, в процесі завантаження і входу користувача в систему формується якийсь віртуальний об'єкт Registry. Дані для формування він бере частково з тих самих файлів, частково з інформації, зібраної під час завантаження Windows.
Цей об'єкт і є тим самим реєстром, з яким взаємодіє операційна система і який бачимо ми.
Основні файли, що відповідають за формування реєстру
- system
- software
- sam
- security
- default
- components
- bcd-template
Зберігаються вони в папці% SystemRoot% \ System32 \ Config \ (зазвичай це C: \ Windows \ System32 \ Config \) і в залежності від версії ОС їх склад може дещо відрізнятися.
Також файли, що відповідають за призначені для користувача настройки, можуть зберігатися в C: \ Documents and Settings \% Username% \ (Ntuser.dat) і в C: \ Documents and Settings \% Username% \ Local Settings \ Application Data \ Microsoft \ Windows \ (UsrClass.dat).
Ще є резервні копії файлів реєстру, створені системою, в залежності від ОС вони зберігаються в:
C: \ Windows \ repair - для XP і Server 2003;
C: \ Windows \ System32 \ config \ RegBack - для Windows 7 \ Server 2008 і новіших .
За замовчуванням операційна система робить резервні копії цих файлів раз в 10 днів за допомогою планувальника завдань.
Взаємодія реєстру з операційною системою
• При запуску комп'ютера распознаватель апаратних засобів (hardware recognizer) поміщає в реєстр список виявлених ним пристроїв. Зазвичай розпізнавання апаратних засобів здійснюється програмою Ntdetect.com і ядром операційної системи Ntoskrnl.exe
• При старті системи ядро системи витягує з реєстру відомості про завантажуються драйвери пристроїв і порядку їх завантаження. Крім того, програма Ntoskrnl.exe передає до реєстру інформацію про себе (напр. Номер версії).
• Під час завантаження системи драйвери пристроїв обмінюються з реєстром параметрами завантаження і конфігураційними даними.Драйвер пристрою повідомляє про використовувані ним системні ресурси, включаючи апаратні переривання (IRQ) і канали доступу до пам'яті (DMA), щоб система могла включити ці дані в реєстр. До речі, реєстр дозволяє створювати кілька апаратних профілів. Апаратний профіль (hardware profile) являє собою набір інструкцій, за допомогою якого можна вказати операційній системі, драйвери яких пристроїв повинні завантажуватися при запуску комп'ютера.За замовчуванням системою створюється стандартний апаратний профіль, який містить інформацію про всі апаратні засоби, виявлених на комп'ютері.
• При вході користувача в систему завантажуються призначені для користувача профілі (user profiles). Вся інформація, що відноситься до конкретного імені користувача і пов'язаними з ним правами зберігається в реєстрі.Призначений для користувача профіль визначає індивідуальні параметри налаштування системи (роздільна здатність дисплея, параметри мережевих з'єднань, підключені пристрої і багато іншого). Інформація про користувача профілях також зберігається в реєстрі.
• Якщо Ви встановлюєте програми.Кожен раз при запуску програми установки відбувається додавання до реєстру нових конфігураційних даних. Починаючи свою роботу, всі програми установки повинні зчитувати інформацію з реєстру, щоб визначити, чи присутні в системі необхідні їм компоненти. Крім того, системний реєстр дозволяє додаткам спільно використовувати конфігураційну інформацію, що надає їм більше можливостей для взаємодії.Додаток має активно і правильно використовувати реєстр, а також мати можливість коректного видалення, не зачіпаючи при цьому компонентів, які можуть використовуватися іншими програмами (бібліотеки, програмні модулі і т. П.). Ця інформація теж зберігається в реєстрі.
• При адмініструванні системи. Коли користувач вносить зміни в конфігурацію системи за допомогою засобів адміністрування системи (напр. Утиліти Панелі управління або оснащення MMC), всі зміни відразу відображаються в системному реєстрі. По суті кошти адміністрування являють собою найбільш зручні і безпечні засоби модифікації реєстру.До речі, до засобів адміністрування можна віднести і редактор реєстру (regedit.exe), адже всі зміни в систему можна вносити безпосередньо правкою реєстру.
Структура реєстру
Реєстр має деревоподібну структуру і складається з 5 основних розділів, їх ще називають гілками реєстру (Registry hives):
HKEY_LOCAL_MACHINE (HKLM) - найбільший розділ реєстру.У ньому зосереджені всі основні настройки операційної системи, а також апаратного і програмного забезпечення комп'ютера. Інформація, що міститься в цьому розділі, застосовується до всіх користувачів, які реєструються в системі.
HKEY_ CLASSES_ ROOT (HKCR) - містить асоціацію між додатками і типами файлів (по розширень файлів).Крім того, в цьому розділі знаходиться інформація про зареєстровані типах файлів і об'єктах COM і ActiveX. Крім HKEY_ CLASSES_ ROOT ці відомості зберігаються також в розділах HKEY_LOCAL_MACHINE і HKEY_CURRENT_USER. Розділ HKEY_LOCAL_MACHINE \ Software \ Classes містить параметри за замовчуванням, які застосовуються до всіх користувачів локального комп'ютера.Параметри, що містяться в розділі HKEY_CURRENT_USER \ Software \ Classes мають пріоритет над за замовчуванням і застосовуються лише до активного користувача. Розділ HKEY_CLASSES_ROOT включає в себе два джерела інформації.
HKEY_USERS (HKU) - містить налаштування середовища для кожного з завантажених профілів, а також для профілю за замовчуванням.У HKEY_USERS знаходиться вкладений розділ \ Default, а також інші підрозділи, які визначаються ідентифікатором безпеки (Security ID, SID) кожного користувача
HKEY_CURRENT USER (HKCU) - містять задану настройки середовища для користувача, на даний момент зареєструвалися в системі (змінні оточення, налаштування робочого столу, параметри мережі, додатків і підключених пристроїв).
Цей розділ дублює інформацію в HKEY_USERS \ user SID, де user SID - ідентифікатор безпеки користувача, зареєстрованого в системі на поточний момент (дізнатися SID поточного користувача можна, набравши в командному рядку whoami/user).
HKEY_CURRENT_ CONFIG (HKCC) - містять задану настройки для поточного апаратного профілю.Поточний апаратний профіль включає в себе набори змін, внесених до стандартної конфігурації пристроїв, задану в підрозділах Software і System кореневого розділу HKEY LOCAL_MACHINE. У HKEY_CURRENT_CONFIG відображаються тільки зміни. Крім того, інформація цього розділу знаходиться в HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ HardwareProfiles \ Current
Дані в реєстрі зберігаються у вигляді параметрів, розташованих в ключах реєстру.Кожен параметр характеризується ім'ям, типом даних і значенням.
Основні типи даних, що застосовуються в реєстрі
REG_DWORD - 32-х розрядне число. Цей тип даних використовують багато параметрів драйверів пристроїв і сервісів. Редактори реєстру можуть відображати ці дані в двійковому, шістнадцятковому і десятковому форматі
REG_SZ - Текстовий рядок в форматі, зручному для сприйняття людиною.Значенням, що представляє собою опису компонентів, зазвичай присвоюється саме цей тип даних
REG_EXPAND_SZ - можливістю розширення рядок даних . Цей рядок являє собою текст, що містить змінну, яка може бути замінена при виклику з боку додатка, наприклад, використовується для запису змінних оточення
REGJMULTI_SZ - багаторядкова поле.Значення, які фактично представляють собою списки текстових рядків у форматі, зручному для сприйняття людиною, зазвичай мають цей тип даних. Рядки розділені символом NULL
REG_BINARY - Двійкові дані. Більшість апаратних компонентів використовують інформацію, яка зберігається в двійковому вигляді.Редактори реєстру відображають цю інформацію в шістнадцятковому форматі
REG_RESOURCE_LIST - Список апаратних ресурсів. Застосовується тільки в галузі HKEY_LOCAL_MACHINE \ HARDWARE
Також іноді можна зустріти такі типи даних реєстру:
REG_RESOUECE_ REQUIREMENTS_LIST - Список необхідних апаратних ресурсів.Застосовується тільки в галузі HKEY_LOCAL_MACHINE \ HARDWARE
REG_FULL_RESOURCE_ DESCRIPTOR - Дескриптор (описувач) апаратного ресурсу. Застосовується тільки в галузі HKEY_LOCAL_MACHINE \ HARDWARE
REG_LINK - Символічна посилання Unicode. Цей тип даних цікавий тим, що дозволяє одному елементу реєстру посилатися на інший ключ або параметр.
REG_QWORD - 64-х розрядне число.
REG_DWORD_ LITTLE_ENDIAN - 32-розрядне число в форматі «остроконечников» (little-endian), еквівалент REG_DWORD
REG_DWORD_BIG_ ENDIAN - 32-розрядне число в форматі «тупоконечников» (big-endian)
REG_QWORD_LITTLE_ ENDIAN - 64-розрядне число в форматі «остроконечников». Еквівалент REG_QWORD
REG_NONE - Параметр не має певного типу даних
.