Заметки о Windows и других программных продуктах Microsoft...

Знакомство с реестром Windows

Знакомство с реестром 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_LOCAL_MACHINE

 

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_ CLASSES_ ROOT

 

HKEY_USERS( HKU) — содержит настройки среды для каждого из загруженных пользовательских профилей, а также для профиля по умолчанию. В HKEY_USERS находится вложенный раздел \Default, а также другие подразделы, определяемые идентификатором безопасности (Security ID, SID) каждого пользователя

HKEY_ USERS

 

HKEY_CURRENT USER (HKCU) — cодержит настройки среды для пользователя, на данный момент зарегистрировавшегося в системе (переменные окружения, настройки рабочего стола, параметры сети, приложений и подключенных устройств).
Этот раздел дублирует информацию в HKEY_USERS\user SID, где user SID — идентификатор безопасности пользователя, зарегистрировавшегося в системе на текущий момент (узнать SID текущего пользователя можно, набрав в командной строке whoami /user) .

HKEY_CURRENT_USER

 

HKEY_CURRENT_ CONFIG (HKCC) — cодержит настройки для текущего аппаратного профиля. Текущий аппаратный профиль включает в себя наборы изменений, внесенных в стандартную конфигурацию устройств, заданную в подразделах Software и System корневого раздела HKEY LOCAL_MACHINE. В HKEY_CURRENT_CONFIG отражаются только изменения. Кроме того, информация этого раздела находится в HKEY_LOCAL_MACHINE\System \CurrentControlSet\HardwareProfiles\Current

HKEY_CURRENT_ CONFIG

 

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

Основные типы данных, применяемые в реестре

REG_DWORD —  32-х разрядное число. Этот тип данных используют многие параметры драйверов устройств и сервисов. Редакторы реестра могут отображать эти данные в двоичном, шестнадцатеричном и десятичном формате

REG_DWORD

 

REG_SZ — Текстовая строка в формате, удобном для восприятия человеком. Значениям, представляющим собой описания компонентов, обычно присваивается именно этот тип данных

REG_SZ

 

REG_EXPAND_SZ — Расширяемая строка данных. Эта строка представляет собой текст, содержащий переменную, которая может быть заменена при вызове со стороны приложения, например, используется для записи переменных окружения

REG_EXPAND_SZ

 

REGJMULTI_SZ — Многострочное поле. Значения, которые фактически представляют собой списки текстовых строк в формате, удобном для восприятия человеком, обычно имеют этот тип данных. Строки разделены символом NULL

REG_MULTI_SZ

 

REG_BINARY — Двоичные данные. Большинство аппаратных компонентов используют информацию, которая хранится в виде двоичных данных. Редакторы реестра отображают эту информацию в шестнадцатеричном формате

REG_BINARY

 

REG_RESOURCE_LIST — Список аппаратных ресурсов. Применяется только в ветви HKEY_LOCAL_MACHINE\HARDWARE

REG_RESOURCE_LIST

 

Также иногда можно встретить такие типы данных реестра:

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 — Параметр не имеет определенного типа данных

 
 
Комментарии

Пока нет комментариев.

Ответить