Реестр Windows - это специализированная база данных для хранения информации о работе и настройке Windows. Реестр пришел на замену INI файлов Windows 3.1. Тогда каждая программа для сохранения информации создавала свой INI файл. Теперь все это хранится вместе. Для обеспечения структуризованности информации реестр сделан в виде дерева. Осознаете Вы или нет, но настраивая Windows, например монитор или музыкальную карту вы вносите изменения в реестр, хоть и этот процесс скрыт от Вас. Можно сказать, что "Панель Управления" является интерфейсом к реестру. Так как графический интерфейс обеспечивает далеко не все возможности по настройке реестра в поставку Windows входит специальная утилита RegEdit для редактирования реестра вручную. Ее можно запустить через меню "Пуск" и "Выполнить", при этом в строке запуска наберите regedit.
Реестр имеет определенную структуру. Весь реестр делится на крупные разделы:
Как вы видите некоторые разделы повторяются или являются частью других и это не просто так в этом есть логика. Сначала надо определиться, что на компьютере может быть несколько конфигураций как пользователей так и оборудования. Так же надо хранить общие данные для всех. Тогда при работе программного обеспечения надо всегда смотреть какой пользователь и какой профиль оборудования. Это не удобно. На компьютере в текущий момент только один профиль пользователя и профиль оборудования, поэтому проще обращаться к нему. Вот для этого и данные о конфинурации конкретного пользователя и оборудования вынесены в отдельный раздел, чтобы к нему сразу можно было обратиться не узнавая какой пользователь сейчас ! Если эта мысль понятна, то и понятно деление на разделы и повторения в реестре. Вот я попробую сделать рисунок поясняющий эту мысль:
При старте компьютера Вас спрашивают имя для того, чтобы знать каким профилем пользоваться и в момент старта 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").