• Угрупування даних в реєстрі
• Типи даних, які використовуються в реєстрі
• Загальні правила роботи з реєстром
Ефективність експлуатації будь-якого програмного продукту багато в чому залежить від того, наскільки грамотно і коректно була проведена його настройка. Зазвичай параметри налаштування зібрані в спеціальній базі даних, що є одним з основних компонентів програми. В операційній системі Windows така база даних називається системним реєстром, вміст якого ми коротко розглянемо в цьому розділі.
1.1. Угруповання даних в реєстрі
Всі параметри системного реєстру WindowsVis ta в залежності від їх функціонального призначення згруповані в п'яти основних розділах, званих кореневими.
Коротко зупинимося на кожному з них (треба відзначити, що назва кожного розділу починається з англійської абревіатури HKEY).
• HKEY_CLASSES_ROOT - включає в себе інформацію про зареєстровані в системі типи файлів, порядку обробки файлів кожного типу, а також управлінні основними настройками інтерфейсу (тобто містить настройки ActiveX-об'єктів).
Крім того, даний кореневий розділ містить відомості про програмні пакетах MSI, які були встановлені в операційній системі, визначає список програм вікна Відкрити за допомогою, а також зберігає список інтерфейсів (бібліотек типів), якими можна користуватися при програмуванні під Windows.
• HKEY_CURRENT_USER - містить інформацію про користувача, що працює з Windows Vista в поточному сеансі, а також про різні настройках системи, що відносяться до активного користувача (вид Робочого столу, мережеві з'єднання, принтери і ін.).
• HKEY_LOCAL_MACHINE - зберігає інформацію про апаратної конфігурації комп'ютера і встановленому програмному забезпеченні. Налаштування розділу дійсні для всіх користувачів даного комп'ютера. Треба сказати, що за обсягом інформації цей розділ є найбільшим, якщо порівнювати з іншими розділами реєстру Windows Vista.
Потрібно відзначити тісний взаємозв'язок даного кореневого розділу до розділу HKEY_CLASSES_ROOT. Фактично HKEY_CLASSES_ROOT є посиланням на гілку реєстру HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes.
• HKEY_USERS - включає в себе інформацію про всіх користувачів даного комп'ютера.
Слід відзначити тісний взаємозв'язок даного кореневого розділу до розділу HKEY_CURRENT_USER, який фактично є посиланням на підрозділ кореневого розділу HKEY_USERS, який зберігає відомості про поточного користувача.
• HKEY_CURRENT_CONFIG - зберігає інформацію про налаштування обладнання, яке використовується локальним комп'ютером в поточному сеансі роботи.
Треба сказати, що даний кореневий розділ є посиланням на підрозділ реєстру HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Hardware Profiles.
В цілому структура реєстру представлена в ієрархічному порядку: кожен з перерахованих розділів має ряд підлеглих рівнів ієрархії, нижньої щаблем якої є параметри налаштування системного реєстру.
Прикладом ієрархії можна вважати зазначений вище підрозділ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Hardware Profiles. Він починається з кореневого розділу HKEY_LOCAL_MACHINE. Підрозділ SYSTEM знаходиться в кореневому розділі HKEY_LOCAL_MACHINE і є підлеглим йому. Підрозділ CurrentControlSet знаходиться в підрозділі SYSTEM і т. Д.
1.2. Типи даних, які використовуються в реєстрі
Розглянемо найбільш часто використовувані в реєстрі Windows Vista типи даних.
• REG_DWORD - ціле число. Може використовуватися, наприклад, в якості перемикача (1 - включення, 0 - виключення деякої дії); можуть застосовуватися й інші числа. Можливо подання цього типу даних в двійковому, десятковому і шістнадцятковому форматі. До цього типу належить, наприклад, в параметрах драйверів пристроїв.
• REG_EXPAND_SZ - розширена рядок. До цього типу належить в Windows для посилань на файли. Крім довільного тексту значення параметра такого типу може включати в себе спеціальні змінні, замінюються певними шляхами до каталогів під час своєї «інтерпретації». Наприклад, значення параметра даного типу може містити такі спеціальні змінні.
-% systemroot% - замінює собою шлях до каталогу, в якому операційна система зберігає свої файли (наприклад, каталог C: \ Windows).
-% windir% - є еквівалентом попередньої змінної. Її відмінність від% systemroot% полягає в тому, що змінну% systemroot% перевизначити не можна, а каталог, до якого веде змінна% windir%, можна змінити за допомогою вікна Змінні середовища, що викликається натисканням відповідної кнопки на вкладці Додатково вікна Властивості системи.
-% systemdrive% - замінює собою букву системного диска (диска, в якому операційна система зберігає свої файли).
-% userprofile% - замінює собою шлях до каталогу, що зберігає профіль поточного користувача.
-% programfiles% - замінює собою шлях до каталогу, в який операційна система за замовчуванням встановлює всі програми.
-% username% - на відміну від попередніх змінних, вона замінює собою не шлях до каталогу, а ім'я поточного користувача, що працює з системою.
-% computername% - як і попередня змінна, вона не має ніякого відношення до файлової системи Windows. Ця змінна замінює собою ім'я комп'ютера (саме це ім'я використовується при зверненні до комп'ютера по мережі і зберігається в строковому параметрі ComputerName гілки реєстру HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ ComputerName \ ComputerName).
• REG_MULTI_SZ - багаторядковий текст (масив рядків). Цей тип зазвичай використовується для подання списків і інших подібних записів в зручному для читання форматі.
• REG_SZ - текстовий рядок. Дані цього типу використовуються в реєстрі найчастіше.
• REG_FULL_RESOURCE_DESCRIPTOR - послідовність вкладених масивів, призначена для зберігання списку ресурсів пристроїв або драйверів.
• REG_LINK - строковий тип даних, призначений для вказівки шляху до файлів. За допомогою програми regedit параметри даного типу створити не можна (але їх також можна створити за допомогою REG-файлів).
Крім перерахованих вище типів даних, в системному реєстрі можуть використовуватися типи REG_NONE, REG_RESOURCE_LIST і ін.
1.3. Загальні правила роботи з реєстром
• У складі меню Файл містяться команди, призначені для роботи з реєстром в цілому. За допомогою команд Імпорт та Експорт проводиться, відповідно, імпорт REG-файлу до реєстру і експорт реєстру цілком або частково в REG-файл. При активізації даних функцій на екрані відображається вікно, в якому потрібно вказати шлях для виконання цих дій. При необхідності підключення до реєстру віддаленого комп'ютера слід скористатися функцією Підключити мережевий реєстр; за допомогою функції Відключити мережевий реєстр виконується зворотна дія.
• Команди меню Вибране призначені для додавання розділу до списку вибраного або для видалення його з цього списку.
Як зазначалося вище, ліва панель вікна містить ієрархічний перелік розділів реєстру. Права панель вікна складається з стовпців Ім'я, Тип і Значення, в яких відображається відповідна інформація (ім'я параметра, тип даних і значення параметра) для активної позиції в лівій панелі вікна.
У наступному розділі ми розглянемо порядок редагування системного реєстру Windows Vista.
Для переходу в режим редагування параметра системного реєстру слід двічі клацнути на ньому кнопкою миші або виконати команду Змінити контекстного меню, яке з'являється при натисканні правою кнопкою миші на імені параметра. В результаті відкриється вікно редагування параметра, в якому виконуються необхідні дії. Вид і склад даного вікна залежать від типу даних поточного параметра реєстру. Коротко розглянемо всі можливі варіанти конфігурації вікна редагування.
На рис. 1.2 показано вікно, призначене для редагування параметрів, що мають тип даних REG_DWORD або REG_DWORD_BIG_ENDIAN.
Мал. 1.2. Зміна параметра типу REG_DWORD
В поле Параметр даного вікна відображається ім'я редагованого параметра. Спосіб представлення його значення вибирається за допомогою перемикача Система обчислення; можливі варіанти - Шістнадцяткова або Десяткова. Редагування значення параметра проводиться з клавіатури в поле Значення. При натисканні кнопки OK змінене значення присвоюється параметру. За допомогою кнопки Скасування можна закрити це вікно без збереження змін.
На рис. 1.3 приведено вікно, в якому проводиться редагування параметрів з типом даних REG_MULTI_SZ.
Мал. 1.3. Редагування параметра типу REG_MULTI_SZ
В даному вікні в полі Параметр відображається найменування редагованого параметра, а в поле Значення з клавіатури вводиться необхідну многостроковие значення даного параметра, що привласнюється йому натисканням кнопки OK.
На рис. 1.4 представлено вікно, призначене для редагування параметрів з наступними типами даних: REG_SZ, REG_EXPAND_SZ, REG_LINK, REG_RESOURCE_LIST, REG_FULL_RESOURCE_DESCRIPTOR, REG_RESOURCE_REQUIREMENTS_LIST.
Мал. 1.4. Редагування строкового параметра
В поле Параметр даного вікна відображається найменування редагованого параметра, а в поле Значення з клавіатури вводиться його потрібну установку.
На рис. 1.5 показано вікно, призначене для редагування двійкових параметрів (тобто параметрів з типом даних REG_BINARY).
Мал. 1.5. Редагування довічного параметра
В поле Параметр даного вікна відображається найменування редагованого параметра, а в поле Значення з клавіатури вводиться його потрібну установку. При цьому потрібно враховувати таку особливість: в лівій частині поля Значення відображається номер редагованого байта, а праворуч від нього - вісім бітів даного байта, в які записується потрібна інформація. У режимі редагування довічного параметра реалізована можливість введення інформації як в двійковій, так і в шістнадцятковій формі (поразрядно). Натисканням кнопки OK параметру присвоюється введене значення.
Слід зазначити, що у всіх наведених вікнах редагування значень параметрів поле Параметр, що містить найменування параметра, є Нередагована. Для зміни імені параметра призначена команда Перейменувати контекстного меню, що з'являється при натисканні правою кнопкою миші на будь-якому параметрі. До складу даного контекстного меню входять функції Змінити, Змінити двійкові дані і Видалити.
1.4. Використання REG-файлів
Слід враховувати, що подвійне клацання кнопкою миші на імені файлу реєстру в Провіднику не відчинить його для редагування, а призведе до імпорту його до реєстру таким же чином, як це сталося б при виконанні команди Файл> Імпорт.
Важливим елементом будь-якого REG-файлу системного реєстру Windows є його перший рядок, текст якої не можна змінювати ні за яких обставин. Тільки по ній система зможе розпізнати, що поточний файл містить саме дані реєстру. Ось як виглядає цей рядок для REG-файлів операційних систем сімейства Windows NT (в тому числі і операційної системи Windows Vista):
Windows Registry Editor Version 5.00
Якщо ви будете створювати REG-файли вручну, то замість цієї довжини рядка можна використовувати інший заголовок:
Даний заголовок REG-файлу використовувався в операційних системах сімейства Windows9x, а також Windows NT 4. Він вважається морально застарілим, проте питання забезпечення сумісності вимагають, щоб він підтримувався майбутніми версіями операційних систем Windows.
Іншими словами, REG-файли, які мають заголовок REGEDIT4, працюватимуть на будь-яких версіях операційної системи Windows. Тоді як REG-файли, що мають більш новий заголовок, будуть працювати тільки в операційних системах починаючи з Windows NT 5.
Розглянемо вміст одного з файлів реєстру на прикладі частини REG-файлу розділу HKEY_CURRENT_USER \ Control Panel \ Mouse.
Windows Registry Editor Version 5.00
Після першого рядка тексту REG-файлу (заголовка) обов'язково повинна слідувати порожній рядок. Потім в квадратних дужках вказується розділ системного реєстру, до якого відносяться редаговані параметри (як роздільник між об'єктами реєстру використовується символ \). Далі йде перелік параметрів редагованого розділу із зазначенням імені параметра, типу даних і значення параметра (кожен параметр відображається в окремому рядку тексту файлу). При цьому дотримуються наступні правила: ім'я параметра полягає в лапки, потім після знака рівності вказується тип даних, далі після двокрапки - значення параметра. Якщо ж тип даних не вказано, то за замовчуванням відповідний параметр вважається строковим і його значення полягає в лапки. Останній рядок REG-файлу повинна залишатися порожньою.
Редагування тексту REG-файлу здійснюється за звичайними правилами роботи з текстовими файлами. Крім того, за допомогою REG-файлу можна видаляти елементи системного реєстру. Наприклад, щоб видалити розділ реєстру, необхідно перед його ім'ям в тексті REG-файлу поставити знак «мінус»:
Слід враховувати, що видалення розділу неможливо до тих пір, поки не видалені всі вхідні в його склад підрозділи, тому спочатку необхідно провести подібну операцію з ними.
Для видалення значення параметра слід поставити знак - після знака =:
Зроблені зміни будуть перенесені до реєстру після імпорту відредагованого REG-файлу.
Характерною особливістю реєстру Windows є те, що, на відміну від більшості інших програм, при його редагуванні система не питає, чи бажає користувач зберегти внесені зміни. Тому в процесі роботи з реєстром слід пам'ятати, що всі внесені коригування неможливо скасувати. Оскільки системний реєстр є одним з головних компонентів Windows, необхідно перед початком редагування створити його резервну копію, до якої можна буде повернутися в разі внесення в реєстр помилкових змін. У цьому розділі ми коротко зупинимося на двох найбільш популярних способах збереження резервної копії.
Архівування в REG-файл
Створення куща реєстру
Щоб створити кущ реєстру, необхідно скористатися командою виду reg save <ветвь реестра> <файл>. Наприклад, архівування кореневого розділу HKEY_CURRENT_USER в файл MyHKEY_CURRENT_USER.hiv, розташований в каталозі c. виконується за допомогою команди reg save HKEY_CURRENT_USER c: \ MyHKEY_CURRENT_USER.hiv.
Згодом ви завжди зможете відновити вміст гілки реєстру зі створеного раніше куща. Для цього призначена команда виду reg restore <ветвь реестра> <файл>. Наприклад, reg restore HKEY_CURRENT_USER c: \ MyHKEY_CURRENT_USER.hiv.
Створення та відновлення з куща реєстру виконується набагато швидше, ніж створення і відновлення з REG-файлу. Однак це ще не всі переваги використання кущів реєстру.
Після того як ви попрацювали з завантаженим кущем, його необхідно вивантажити. Для цього виберіть доданий кущ реєстру (тобто виділіть розділ з ім'ям, яке ви вказали при завантаженні куща реєстру), після чого скористайтеся командою меню Файл> вивантажити кущ. В принципі, цього можна і не робити - операційна система сама вивантажить ваш кущ при завершенні роботи комп'ютера. Однак ви повинні розуміти, що завантажений вами кущ, якщо ви його не вивантажите, буде знаходитися в оперативній пам'яті аж до наступного перезавантаження / виключення комп'ютера.