Рейтинг@Mail.ru

NetCloud

Простыми словами о сетевых технологиях

Структура реестра Windows

Реестр представляет из себя важнейший компонент операционных систем семейства Windows. Он достаточно сложен для понимания обычному пользователю. Что же представляет из себя реестр Windows? Реестр — это централизованная база данных, хранящая все настройки операционный системы и работающих в ней приложений. Реестр содержит информацию обо всех аппаратных устройствах, сведения о расширениях имен файлов, всех системных компонентов и работающих в системе приложениях, сетевые параметры, информацию безопасности и т.д.

Таким образом, если на компьютере под управлением Windows имеется программный или аппаратный компонент, влияющий на его работы, то вся информация об этом компоненте хранится в реестре Windows. На схеме ниже показана упрощенная модель, демонстрирующая системные компоненты и их взаимодействие с реестром.

wzrrgyx0

Рассмотрим более подробно, каким образом компоненты Windows 7 взаимодействуют с системным реестром:

  1. Программа Windows Setup (программа установки) — при первом запуске собирает информацию о системе и создает реестр на основе полученных данных. При установке драйверов или приложений, программа-установщик читает из реестра информацию и добавляют туда свои конфигурационные данные. Наличие реестра позволяет всем программа получать доступ к централизованной базе данных и взаимодействовать друг с другом. Помимо этого, хранимая в реестре информация позволяет корректно удалить приложение, при этом не затрагивая такие важные компоненты как, например, библиотеки DLL.
  2. Среда восстановления Windows (WinRE) — набор средств, предназначенных для диагностики поврежденной системы и восстановления ее после серьезных ошибок. WinRE активно работает с реестром, и одна из выполняемых задач — это восстановление поврежденного реестра.
  3. Менеджер загрузки Windows (Windows Boot Manager) — Диспетчер загрузки получает доступ к базе данных BCD (Boot Configuration Data), которая хранится в реестре. После чтения конфигурационных данных менеджер загрузки передает управление Загрузчику Windows — файлу winload.exe, который, в первую очередь, читает необходимые данные из реестра, а затем загружает в память ядро операционной системы (%system32%\ntoskrnl.exe) и уровень аппаратных абстракций (%system%\hall.dll), а также все драйверы начальной загрузки и DLL режима ядра. Вот почему в случае отсутствия или повреждения файлов реестр операционная система просто не загрузится.
  4. Диспетчер PnP — отвечает за обнаружение устройство по двум параметрам: идентификатору поставщика (vendor ID, VID) и идентификатору устройства (device ID, DID). Когда диспетчер PnP определяет уникальную комбинацию VID и DID, он запрашивает информацию о шине, на которой обнаружено устройство и проверяет установлен ли драйвер для этого устройства. В случае, если драйвер не установлен подсистема PnP должна найти подходящий INF-файл для инсталяции драйвера и начать его установку.
  5. Диспетчер питания (Power Manager) — тесно взаимодействует с диспетчером PnP, приложениями, поддерживает разнообразные схемы управления электропитанием и управляется групповыми политиками, а вся эта информация хранится в реестре.
  6. Драйверы устройств — обмениваются с реестром параметрами загрузки и конфигурационными данными. Драйвер должен сообщить об используемых им системных ресурсах.  Сами приложения и драйверы устройств могут считывать эту информацию из реестра, предоставляя пользователям удобные средства для установки и конфигурирования.
  7. Административные средства — административные средства Windows, в том числе утилиты из Панели управления и программы из группы Администрирование представляет собой наиболее удобные и безопасные средства модификации реестра.
  8. Пользовательские профили (user profiles) — вся информация, относящаяся к конкретной учетной записи пользователя и ассоциированными с ней правами, хранится в реестре. Групповые политики также хранятся в реестре.
  9. Аппаратные профили (hardware profiles) — представляет собой набор инструкций, с помощью которых можно указать операционной системе, драйверы каких устройств должны загружаться при запуске компьютера.
  10. Файловые системы — начиная с Windows Vista как файловые системы, так и реестр основаны на транзакциях. На практике это означает, что если набор операций над файлами и реестром помечен как транзакция, то в случае неудачи хоть одной из этих операций всю транзакцию можно «откатить» в исходное положение.
  11. Подсистема безопасности Windows 7 — подсистема безопасности со всеми ее функциональными возможностями, включая контроль учетных записей (User Account Control, UAC), также реализована на базе реестра и используется для его же защиты. Принцип действия UAC заключается в ограничении привилегий, предоставляемых запускаемым приложениям, уровнем привилегий обычного пользователя. Иными словами, даже если пользователь, запускающий приложение, и обладает административными правами, запускаемые им приложения таких привилегий не имеют, если только пользователь явно не запускает их от имени администратора. Таким образом, с повышенным уровнем привилегий запускаются лишь приложения, которым пользователь доверяет.
  12. Сетевые компоненты Windows — включают драйверы сетевых адаптеров, параметры настройки сетевых протоколов и сервисов, а также параметры сетевой безопасности и средства защиты сети от атак. Все это также хранится в реестре. Например, база данных Брандмауэра Windows (Windows Firewall) находится в реестре. Многие брандмауэры сторонних производителей также создают в реестре свои ключи, и, следовательно, успешная атака на реестр открывает путь к вторжению извне.

Файловая система на жестком диске имеет много чего общего с логической структурой реестра. Реестр содержит ключи (keys) и параметры (values), которые соответствуют каталогам и файлам на жестком диске. Ключи реестра могут содержать в себе вложенные ключи (подкаталоги). Параметры реестра (также как и файлы) хранят данные. Ключи, находящиеся на самом верхнем уровне иерархии, называются корневыми ключами (root keys). Схема именования ключей и параметров реестра похожа на пути в файловой системе. Типичный путь к вложенному ключу реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet. Реестр Windows 7 содержит пять корневых ключей: HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG. 

Чтобы зайти в реестр Windows 7, нажмите сочетание клавиш win + R (появится окно «Выполнить»), после чего введите Regedit и нажмите Enter.

regedit

Появиться окно редактора реестра.

reestr

Все имена корневых ключей начинаются со строки HKEY_, что указывает разработчикам программного обеспечения на то, что это дескриптор, который может использоваться программой.

Дескриптор (handle) — это значение, применяемое для уникального описания ресурса, к которому программа может получить доступ.

Описание корневых ключей показано в таблице ниже.

Имя корневого ключа Описание
HKEY_LOCAL_MACHINE Содержит глобальную информацию об аппаратных средствах и операционной системе, в том числе: тип шины, системная память, драйверы устройств и управляющие данные, используемые при запуске системы. Информация, содержащаяся в составе этого ключа, действует применительно ко всем пользователям, регистрирующимся в системе. На верхнем уровне иерархии реестра для этого ключа имеются три псевдонима: HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG и HKEY_DYN_DATA.
HKEY_CLASSES_ROOT Содержит ассоциации между приложениями и типами файлов (по расширению имени файла). Кроме того, этот ключ хранит информацию OLE, ассоциированную с объектами COM, а также данные по ассоциациям файлов и классов.
HKEY_CURRENT_CONFIG Содержит конфигурационные данные для текущего аппаратного профиля. Аппаратные профили (Hardware profiles) представляют собой наборы изменений, внесенных в стандартную конфигурацию сервисов и устройств, установленную данными ключей Software и System коревого ключа HKEY_LOCAL_MACHINE. В ключе HKEY_CURRENT_CONFIG отображаются только изменения.
HKEY_CURRENT_USER Содержит профиль пользователя, в данный момент зарегистрированного в системе, включая переменные окружения, настройку рабочего стола, параметры настройки сети, принтеров и приложений. Этот ключи представляет собой ссылку на ключ HKEY_USERS\user_SID, где user_SID — идентификатор безопасности (Security ID) пользователя, зарегистрированного в системе на текущий момент.
HKEY_USERS Содержит все активно загруженные пользовательские профили, включая HKEY_CURRENT_USER, а также пользовательский профиль по умолчанию (.DEFAULT). Пользователи, получающие удаленный доступ к серверу, не имеют профилей, содержащихся под этим ключом, — их профили загружаются в реестры на собственных компьютерах.

Данные реестра поддерживаются в виде параметров, расположенных под ключами реестра. Каждый параметр характеризуется именем, типом данных и собственно значением. Три части параметра реестра всегда располагаются в порядке, показанной на рисунке ниже:

parametr

 

В таблице ниже перечислены основные типы данных, определенные и используемые в Windows 7.

Имя корневого ключа Описание
REG_BINARY Двоичные данные. Большинство аппаратных компонентов используют информацию, которая хранится в виде двоичных данных. Редакторы реестра отображают эту информацию в шестнадцатеричном виде.
REG_DWORD Данные представлены в виде значения, длина которого составляет 4 байта. Этот тип данных используют многие параметры драйверов устройств и сервисов. Редакторы реестра могут отображать такие данные в двоичном, шестнадцатиричном и десятичном формате.
REG_EXPAND_SZ Расширяемая строка данных, представляет из себя текст, содержащий переменную, которая может быть заменена при вызове со стороны приложения.
REG_MULTI_SZ Многострочное поле. Значения, которые фактически представляют собой списки текстовых строк, обычно имеют этот тип данных.
REG_SZ Текстовая строка в формате, удобном для восприятия человеком. Данный тип присваивается значениям, представляющим собой описания компонентов.
REG_DWORD_

LITTLE_ENDIAN

32-разрядное число, представляет из себя эквивалент REG_DWORD. Самый младший байт хранится в памяти первым в числе.
REG_DWORD_

BIG_ENDIAN

32-разрядное число, представляет из себя эквивалент REG_DWORD. Самый старший байт хранится в памяти первым в числе.
REG_LINK Символическая ссылка UNICODE. Этот тип данных предназначен для внутреннего использования. Типа данных REG_LINK позволяет одному элементу реестра ссылаться на другой ключ или параметр.
REG_NONE Не имеет определенного типа данных.
REG_QWORD 64-разрядное значение
REG_QWORD_
LITTLE_ENDIAN
64-разрядное число, представляет из себя эквивалент REG_QWORD. Самый младший байт хранится в памяти первым в числе.
REG_QWORD_
BIG_ENDIAN
64-разрядное число, представляет из себя эквивалент REG_QWORD. Самый старший байт хранится в памяти первым в числе.
REG_RESOURCE_LIST Список аппаратных ресурсов, применяется в ветви HKEY_LOCAL_MACHINE\HARDWARE
REG_FULL_RESOURCE_

DESCRIPTOR

Дескриптор (описатель) аппаратного ресурса, применяется в ветви HKEY_LOCAL_MACHINE\HARDWARE
REG__RESOURCE_

REQUIREMENTS_

LIST

Список необходимых аппаратных ресурсов, применяется в ветви HKEY_LOCAL_MACHINE\HARDWARE

Реестр подразделяется на составные части, которые разработчики назвали ульями (hives), по аналогии с ячеистой структурой пчелиного улья. Улей представляет собой дискретную структуру ключей, вложенных ключей и параметров, берущую начало в вершине иерархии реестра. Отличие ульев от других групп ключей состоит в том, то они являются постоянными компонентами реестра. Ульи не создаются динамически при запуске системы и не удаляются при ее остановке.

Данные ульев реестра, определяющие общесистемные параметры конфигурации, хранятся в файлах, которые размещаются в каталогах %SystemDrive%\Boot\BCD и %SystemRoot%\System32\Config. Ульи реестра, задающие пользовательскую конфигурационную информацию хранятся в %SystemRoot%\Users\Username.