Windows - статьи




Программирование для системного реестра на С++


©

Ни одно профессиональное Windows-приложение не обходится без обращения к центальной базе данных всей системы - системному реестру Windows (registry). Между тем в интернете и сопутствующих изданиях достаточно мало рассказывается о Win32-функциях, которые позволяют взаимодействовать с системным реестром Windows и программисту нужно обращаться к Platform SDK, которая ко всему прочему на английском языке, что для некоторых является камнем преткновения. Данная статья содержит описание основных функций и положений программирования реестра на C++.

Раздел системного реестра, является стандартным объектом исполнительной системы, который экспортирует подсистема Win32, и к которому можно получить доступ через описатель (handle). Такая схема получения доступа используется для всех объектов ядра, экспортируемых через подсистему Win32. Общие сведения о функционировании объектов ядра содержатся в книге Дж. Рихтера "Windows для профессионалов".

Как и для любого объекта ядра, для обращения к разделу реестра нужно получить его описатель и указать действия, которые вы будете выполнять с ним. Описатель раздела системного реестра можно получить создавая или открывая раздел, для этого предназначены следующие Win32-функции.

RegOpenKey

RegOpenKeyEx

RegCreateKeyEx

Как видно из названия функции RegOpenKey и RegOpenKeyEx открывают раздел реестра (получают описатель), а RegCreateKeyEx - создает раздел реестра и тоже получает описатель. Прототипы функции и их использование объяснены ниже.

LONG RegOpenKey (HKEY hKey, LPCTSTR lpSubKey, PHKEY phkResult)

Функция открывает раздел реестра.

  • hKey Описатель открываемого раздела, который может быть получен функциями RegCreateKeyEx и RegOpenKeyEx. Microsoft упростила жизнь разработчику, определив стандартные описатели:

    HKEY_CLASSES_ROOT

    HKEY_CURRENT_CONFIG

    HKEY_CURRENT_USER

    HKEY_LOCAL_MACHINE

    HKEY_USERS

    Для Windows Me/98/95 также: HKEY_DYN_DATA

  • lpSubKey Указатель на строку, завершающуюся нулевым байтом, которая содержит имя открываемого раздела.


    Содержание    Вперед