На этом шаге мы рассмотрим структуру системного реестра.
Реестр организован в виде иерархической базы данных. В корне находится набор зависящих от ОС основных разделов, соответствующих основным компонентам системы.
В таблице 1 содержится информация о назначении пяти основных разделов, общих для всех ОС Windows.
Имя основного раздела | Назначение |
---|---|
HKEY_CLASSES_ROOT | Содержит информацию о конфигурации программ, включая привязку типов файлов к конкретным приложениям, параметры операций "drag-and-drop", принтеров и СОМ |
HKEY_CURRENT_USER | Содержит пользовательские параметры настройки системы. Этот раздел создается и заполняется информацией из раздела HKEY_USERS при входе пользователя в систему |
HKEY_LOCAL_MACHINE | Содержит параметры компьютера, драйверов и другого оборудования. Записи этого раздела - общие для всех пользователей данной машины |
HKEY_USERS | Содержит информацию обо всех пользователях, учетные записи которых есть на данной машине. Содержит два типа параметров - общие для всех пользователей и индивидуальные |
HKEY_CURRENT_CONFIG | Содержит данные о текущей конфигурации оборудования |
Основные разделы делятся на подразделы. Они похожи на папки в том смысле, что допускают вложение и для указания пути используют такую же нотацию. На рисунке 1 открыт раздел HKEY_CURRENT_USER\Software\ACD Systems\ACDSee.
Рис.1. Просмотр разделов реестра
В разделах и подразделах могут находится параметры (values), которые являются конечными элементами иерархии реестра. В них, собственно, и хранятся данные.
Параметр состоит из трех элементов - имени, типа данных и значения. В разделе может находится только один параметр без имени, служащий для раздела значением по умолчанию. Тем не менее для удобства всегда присваивайте значениям системного реестра осмыенное имя, указывающее на их назначение.
В Windows задан набор типов данных системного реестра. Наиболее часто употребляемые типы приведены в таблице 2.
Тип данных | Применениее |
---|---|
REG_DWORD | 32-разрядное число |
REG_BINARY | Двоичные данные в произвольной форме |
REG_SZ | Строка, оканчивающаяся нулевым символом |
REG_MULTI_SZ | Массив оканчивающихся нулем строк, в конце которого записано два нулевых символа |
REG_EXPAND_SZ | Строка с нулевым символом в конце, содержащая нераскрытые ссылки на переменные окружения |
Полный перечень типов откроется, когда Вы проведете в справке Visual C++ поиск по ключевому слову "RegSetValueEx" (это функция Windows API, служащая для задания значений параметров и их типов).
На следующем шаге мы рассмотрим поддержку операций с реестром в MFC.