Книга: C# для профессионалов. Том II
Реестр
Реестр
Реестр имеет иерархическую структуру, очень похожую на файловую систему. Обычно просмотр или изменение содержимого реестра выполняется с помощью одной из двух утилит — regedit
или regedt32
. regedit
стандартно поставляется со всеми версиями Windows, начиная с Windows 95. Утилита regedt32
поставляется с Windows NT и Windows 2000 — она менее дружественна пользователю, чем regedit
, но разрешает доступ к данным безопасности, которые regedit
не может видеть. Здесь будет использоваться regedit
, которую можно запустить, вводя regedit
в диалоговом окне Run… или командной строке.
При первом запуске regedit
появится примерно следующее изображение:
Regedit
имеет интерфейс пользователя в стиле представлений дерева/списка, аналогичный Проводнику Windows, который соответствует иерархической структуре самого реестра. Однако, как мы скоро увидим, существуют некоторые различия.
В файловой системе узлами самого верхнего уровня можно считать разделы диска C:, D: и т.д. В реестре эквивалентом разделу является улей реестра. Невозможно изменить существующие ульи, они являются фиксированными, и всего существует семь ульев (хотя с помощью regedit
можно увидеть только пять):
? HKEY_CLASSES_ROOT (HKCR) содержит данные о типах файлов в системе (.txt
, .doc
и т.д.) и приложениях, которые могут открывать файлы каждого типа. Включает также информацию о регистрации для всех компонентов COM (эта область является обычно наибольшей областью реестра, так как Windows сегодня поставляется с огромным числом компонентов COM).
? HKEY_CURRENT_USER (HKCU) содержит данные о предпочтениях пользователя, который в данный момент зарегистрирован на машине.
? HKEY_LOCAL_MACHINE (HKLM) является огромным ульем, который содержит данные обо всем программном обеспечении и оборудовании, установленном на машине. Он также содержит улей HKCR: HKCR в действительности не является независимым ульем со своими собственными правами, а является просто удобным отображением на ключ реестра HKLM/SOFTWARE/Classes
.
? HKEY_USERS (HKUSR) содержит данные о пользовательских предпочтениях всех пользователей. Как можно догадаться, он содержит также улей HKCU, который является отображением на один из ключей в HKEY_USERS).
? HKEY_CURRENT_CONFIG (HKCF) содержит данные об оборудовании компьютера.
Оставшиеся два ключа содержат информацию, которая имеет временный характер и которая часто изменяется:
? HKEY_DYN_DATA является общим контейнером для любых изменчивых данных, которые необходимо хранить где-то в реестре.
? HKEY_PERFORMANCE_DATA содержит данные, связанные с производительностью выполняющихся приложений.
Внутри ульев находится древовидная структура ключей реестра. Каждый ключ является во многом аналогом папки или файла в файловой системе. Однако существует одно очень важное различие: файловая система различает файлы (которые предназначены для хранения данных) и папки (которые предназначены прежде всего для хранения других файлов или папок), но в реестре существуют только ключи. Ключ может содержать как данные, так и другие ключи.
Если ключ содержит данные, то они будут представлены как последовательность значений (можно привести доводы, что эти значения и есть грубые эквиваленты файлов в файловой системе). Каждое значение будет иметь имя, тип данных и значение. Кроме того, ключ может иметь значение по умолчанию, не имеющее имени.
Эту структуру можно увидеть, используя regedit
для проверки ключей реестра. На экране показано содержимое ключа HKCU/Control Panel/Appearance, в котором находятся данные выбранной цветовой схемы зарегистрированного в данный момент пользователя. regedit показывает, какой ключ проверяется, выводя его с изображением открытой папки в древовидном представлении:
Ключ HKCU/Control Panel/Appearance имеет три заданных именованных значения, хотя значение по умолчанию не содержит никаких данных. Столбец на экране, помеченный Type, указывает тип данных каждого значения. Записи в реестре можно форматировать как один из трех типов данных. Этими типами являются REG_SZ (что грубо соответствует экземпляру строки .NET — соответствие неточное, так как типы данных реестра не являются типами данных .NET), REG_DWORD (грубо соответствует uint
), и REG_BINARY (массив байтов).
Приложение, которое хочет сохранить данные в реестре, будет делать это создавая ряд ключей реестра, обычно с ключом HKLM/Software/<ИмяКомпании>. Отметим, что эти ключи не обязательно должны содержать какие-либо данные. Иногда сам факт существования ключа предоставляет достаточно информации для приложения.
- Хранение конфигурации в системном реестре
- Запрет на редактирование реестра
- Чистка системного реестра
- Как вручную скопировать файлы реестра?
- Сохранение информации в реестре Windows
- Часть 2 Реестр Windows XP
- Потенциально опасные ветви и параметры реестра
- Работа с системным реестром Windows
- Параметры реестра, влияющие на политику безопасности для WSH
- Управление системным реестром
- Пример: вывод списка разделов и содержимого реестра
- Ключи реестра