Шаг 28 - Реестр Windows

Реестр Windows - это специализированная база данных для хранения информации о работе и настройке Windows. Реестр пришел на замену INI файлов Windows 3.1. Тогда каждая программа для сохранения информации создавала свой INI файл. Теперь все это хранится вместе. Для обеспечения структуризованности информации реестр сделан в виде дерева. Осознаете Вы или нет, но настраивая Windows, например монитор или музыкальную карту вы вносите изменения в реестр, хоть и этот процесс скрыт от Вас. Можно сказать, что "Панель Управления" является интерфейсом к реестру. Так как графический интерфейс обеспечивает далеко не все возможности по настройке реестра в поставку Windows входит специальная утилита RegEdit для редактирования реестра вручную. Ее можно запустить через меню "Пуск" и "Выполнить", при этом в строке запуска наберите regedit.

Реестр имеет определенную структуру. Весь реестр делится на крупные разделы:

Как вы видите некоторые разделы повторяются или являются частью других и это не просто так в этом есть логика. Сначала надо определиться, что на компьютере может быть несколько конфигураций как пользователей так и оборудования. Так же надо хранить общие данные для всех. Тогда при работе программного обеспечения надо всегда смотреть какой пользователь и какой профиль оборудования. Это не удобно. На компьютере в текущий момент только один профиль пользователя и профиль оборудования, поэтому проще обращаться к нему. Вот для этого и данные о конфинурации конкретного пользователя и оборудования вынесены в отдельный раздел, чтобы к нему сразу можно было обратиться не узнавая какой пользователь сейчас ! Если эта мысль понятна, то и понятно деление на разделы и повторения в реестре. Вот я попробую сделать рисунок поясняющий эту мысль:

28.gif (771 b)

При старте компьютера Вас спрашивают имя для того, чтобы знать каким профилем пользоваться и в момент старта Windows копирует соответствующую ветвь из HKEY_USERS в HKEY_CURRENT_USER, а при выходе из Windows обратно копируется. Кстати создать пользователей можно в "Панель управления" - "Пользователи".

Ну это понятно, а что же для программиста ??? В Windows API есть ряд функций для работы с реестром. Вот они. Часть из них описана в "Подробности - Функции для работы с реестром".

RegCloseKey  
RegConnectRegistry  
RegCreateKey  
RegCreateKeyEx  
RegDeleteKey  
RegDeleteValue  
RegEnumKey  
RegEnumKeyEx  
RegEnumValue  
RegFlushKey  
RegGetKeySecurity  
RegLoadKey  
RegNotifyChangeKeyValue  
RegOpenKey  
RegOpenKeyEx  
RegQueryInfoKey  
RegQueryMultipleValues  
RegQueryValue  
RegQueryValueEx  
RegReplaceKey  
RegRestoreKey  
RegSaveKey  
RegSetKeySecurity  
RegSetValue  
RegSetValueEx  
RegUnLoadKey

GetPrivateProfileInt  
GetPrivateProfileSection  
GetPrivateProfileSectionNames  
GetPrivateProfileString  
GetPrivateProfileStruct  
GetProfileInt  
GetProfileSection  
GetProfileString  
WritePrivateProfileSection  
WritePrivateProfileString  
WritePrivateProfileStruct  
WriteProfileSection  
WriteProfileString

В MFC есть ряд своих возможностей работы с реестром. Во-первых, класс CWinApp умеет работать с реестром (смотрите "Шаг 39 - Работа с реестром").

Во-вторых есть класс CRegKey, который тоже дает возможность работы с реестром (смотрите "Шаг 213 - Работа с реестром CRegKey").


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 12.08.2000