
Лабораторная 1.
Обзор реестра Windows XP
Структура реестра
Д
ля
понимания логической структуры реестра
проще всего провести аналогию со
структурой файловой системы на диске.
Реестр содержит ключи (keys), которые
аналогичны каталогам, и параметры
(values), которые можно сравнить с файлами,
хранящимися на диске. Ключи реестра
представляют собой контейнеры, в составе
которых могут содержаться как вложенные
ключи (subkeys), так и параметры. Параметры
реестра (как и файлы) содержат данные.
Ключи, находящиеся на верхнем уровне
этой иерархической структуры, называются
корневыми ключами (root keys).
Схема именования ключей и параметров реестра также заимствуется от схемы именования путей к файлам и каталогам, принятой для файловой системы. Сравните, например, типичный путь к каталогу (WORK\BHV) и типичный путь к вложенному ключу реестра (HKEY_LOCAL_MACHINE\SYSTEM \Current.GontrolSet).
Реестр Windows 2000/XP содержит 5 коревых ключей:
HKEY_CLASSES_ROOT,
HKEY_GURRENT_ USER
HKEY_LOCAL_MACHINE,
HKEY_USERS
HKEY_CURREKT_CONFIG.
Рис. 1.6. Иерархическая структура реестра
Все имена корневых ключей начинаются со строки HKEY_, что указывает разработчикам программного обеспечения на то, что это — дескриптор, который может использоваться программой. Дескриптор (handle) — это значение, применяемое для уникального описания ресурса, к которому программа может получить доступ. Описания корневых ключей реестра Windows NT/2000/XP приведены в табл. 1.1.
Таблица 1.1. Корневые ключи реестра
Имя корневого ключа |
Описание |
HKEY_LOCAL_MACHINE |
Содержит глобальную информацию об аппаратных средствах и операционной системе, в том числе: тип шины, системная память, драйверы устройств и управляющие данные, используемые при запуске системы. Информация, содержащаяся в составе этого ключа, действует применительно ко всем пользователям, регистрирующимся в системе. На верхнем уровне иерархии реестра для этого ключа имеются три псевдонима: HKEY_CLASSES_ ROOT, HKEY_CURRENT_CONFIG и HKEY_DYN_ DATA |
HKEY_CLASSES_ROOT |
Содержит ассоциации между приложениями и типами файлов (по расширениям имени файла). Кроме того, этот ключ хранит информацию OLE, ассоциированную с объектами СОМ, а также данные по ассоциациям файлов и классов (эквивалент реестра ранних версий Windows, служивших настройкой над MS-DOS). Параметры этого ключа совпадают с параметрами, расположенными под ключом HKEY_LOCAL_MACHINE \ Software \Classes. Подробную информацию о ключе HKEY_CLASSES_ROOT можно найти в руководстве "OLE Programmer's Reference", входящем в состав продукта Windows Platform Software Development Kit (SDK) |
HKEY_CURRENT_CONFIG |
Содержит конфигурационные данные для текущего аппаратного профиля. Аппаратные профили (Hardware profiles) представляют собой наборы изменений, внесенных в стандартную конфигурацию сервисов и устройств, установленную данными ключей Software и System корневого ключа HKEY_LOCAL_MACHINE. В ключе HKEY_CURRENT CONFIG отражаются только изменения. Кроме того, параметры этого ключа появляются также под ключом HKEY_LOCAL_ MACHINE \Systern \ CurrentControlSet \HardwareProflies \Current |
HKEY_CURRENT_USER |
Содержит профиль пользователя, на данный момент зарегистрированного в системе, включая переменные окружения, настройку рабочего стола, параметры настройки сети, принтеров и приложений. Этот ключ представляет собой ссылку на ключ HKEY_ USERS\user_ SID, где user SID — идентификатор безопасности (Security ID) пользователя, зарегистрированного в системе на текущий момент |
HKEY_USERS |
Содержит все активно загруженные пользовательские профили, включая HKEY_ CURRENT_ USER, а также профиль по умолчанию. Пользователи, получающие удаленный доступ к серверу, не имеют профилей, содержащихся под этим ключом; их профили загружаются в реестры на собственных компьютерах. Windows NT/2000/XP содержит все активно загруженные пользовательские профили, включая HKEY_ CURRENT_ USER, а также пользовательский профиль по умолчанию (.DEFAULT). Пользователи, получающие удаленный доступ к серверу, не имеют профилей, содержащихся под этим ключом; их профили загружаются в реестры на собственных компьютерах |
Примечание
Как уже говорилось, концепция реестра впервые была введена в первой версии Windows NT— Windows NT 3.1. Реестры Windows 9x/ME берут начало от этой первой версии. Однако на текущий момент между реестрами Windows 9х/МЕ и Windows NT/2000/XP существуют серьезные различия. Наиболее очевидное из них заключается в том, что реестр Windows 95/98/ME имеет еще один ключ верхнего уровня — HKEY_DYN_DATA. Этот ключ содержит информацию о системе, которую операционные системы Windows 9x/ME должны постоянно "держать наготове", поскольку она может потребовать оперативного обновления. Эту информацию реестра Windows 9x/ME хранит в оперативной памяти, не записывая на жесткий диск. Ключ HKEY_DYN_DATA имелся во всех бета-версиях, но при попытке его открыть всегда появлялось сообщение об ошибке. В настоящее время, утилиты Regedit.exe и Regedt32.exe в Windows 2000 и Редактор реестра (Registry Editor) Windows XP (Regedit.exe) не показывают этот ключ.
Д
анные
реестра поддерживаются в виде параметров,
расположенных под ключами реестра.
Каждый параметр характеризуется именем,
типом данных и собственно значением.
Три части параметра реестра всегда
располагаются в следующем порядке:
В табл. 1.2 перечислены типы данных, определенные и используемые в системе Windows NT/2000/XP.
Таблица 1.2. Типы данных для параметров реестра
Тип данных |
Описание |
REG_BINARY |
Двоичные данные. Большинство аппаратных компонентов используют информацию, которая хранится в виде двоичных данных. Редакторы реестра отображают эту информацию в шестнадцатеричном формате |
REG_DWORD |
Данные представлены в виде значения, длина которого составляет 4 байта. Этот тип данных используют многие параметры драйверов устройств и сервисов. Редакторы реестра могут отображать такие данные в двоичном, шестнадцатеричном и десятичном формате |
REG_EXPAND_SZ |
Расширяемая строка данных. Она представляет собой текст, содержащий переменную, которая может быть заменена при вызове со стороны приложения |
REG_MULTI_SZ |
Многострочное поле. Значения, которые фактически представляют собой списки текстовых строк, обычно имеют этот тип данных. Строки разделены символом NULL |
REG_SZ |
Текстовая строка в формате, удобном для восприятия человеком. Значениям, представляющим собой описания компонентов, обычно присваивается именно этот тип данных |
REG_DWORD_LITTLE_ENDIAN |
32-разрядное число в формате "остроконечников" (little-endian). Представляет собой эквивалент типа REG_ DWORD. При использовании метода "остроконечников" самый младший байт ("little end") хранится в памяти первым в числе. Например, шестнадцатеричное число А02Вh по методу "остроконечников" сохраняется как 2ВА0. Метод "остроконечников" используется в микропроцессорах Intel |
REG_DWORD_BIG_ENDIAN |
32-разрядное число в формате "тупоконечников" (big endian). В противоположность методу "остроконечников", при использовании метода "тупоконечников" первым байтом числа оказывается самый старший байт ("big end") |
REG_LINK |
Символическая ссылка Unicode. Этот тип данных предназначен для внутреннего использования. Тип данных REG_ LINK особенно интересен тем, что он позволяет одному элементу реестра ссылаться на другой ключ или параметр. Например, если элемент реестра \Rootl\Link имеет параметр типа REG_LINK со значением \Root2\RegKey, а ключ RegKey содержит параметр RegValue, то этот параметр идентифицируется двумя путями: \Rootl\Link\RegValue и \Root2\RegKey \RegValue. Windows NT/2000/XP активно использует этот метод — некоторые из корневых ключей реестра, перечисленных в табл. 1.1, являются ссылками на вложенные ключи других корневых ключей |
REG_NONE |
Параметр не имеет определенного типа данных |
REG_DWORD |
64-разрядное значение |
REG_QWORD_LITTLE _ENDIAN
|
64-разрядное число в формате "остроконечников". Эквивалент REG_ QWORD |
REG_RESOURCE_LIST |
Список аппаратных ресурсов, применяется только в ветви HKEY_ LOCAL_ MACHINE \HARD WARE |
REG_FULL_RESOURCE _DESCRIPTOR |
Дескриптор (описатель) аппаратного ресурса. Применяется только в ветви HKEY_ LOCAL_ MACHINEV HARDWARE |
REG_RESOUECE_ REQUIREMENTS_ LIST |
Список необходимых аппаратных ресурсов. Применяется только в ветви HKEY_ LOCAL_ MACHINS\HARDWARE |