API функции для работы с реестром

Немного теории:

Реестр Windows (системный реестр) — иерархически построенная база данных параметров и настроек в большинстве операционных систем Microsoft Windows.

Описание разделов реестра:
HKEY_CURRENT_USER
Данный раздел содержит настройки текущего активного пользователя, вошедшего в систему. Здесь хранятся папки пользователя, цвета экрана и параметры панели управления. Эти сведения сопоставлены с профилем пользователя. Вместо полного имени раздела иногда используется аббревиатура HKCU. Хотя это раздел выглядит как один из основных в редакторе реестра, он является всего лишь ссылкой на один из профилей HKEY_USERS.

HKEY_USERS
Данный раздел содержит все активные загруженные профили пользователей компьютера. Раздел HKEY_CURRENT_USER является подразделом раздела HKEY_USERS. Вместо полного имени раздела иногда используется аббревиатура HKU.

HKEY_LOCAL_MACHINE
Раздел содержит параметры конфигурации, относящиеся к данному компьютеру (для всех пользователей). Вместо полного имени раздела иногда используется аббревиатура HKLM.[1]
[править]HKEY_CLASSES_ROOT
Является подразделом HKEY_LOCAL_MACHINE\Software\Classes. В основном, содержит информацию о зарегистрированных типах файлов и объектах COM и ActiveX. Вместо полного имени раздела иногда используется аббревиатура HKCR. Начиная с Windows 2000, эти сведения хранятся как в HKEY_LOCAL_MACHINE, так и в HKEY_CURRENT_USER. Раздел HKEY_LOCAL_MACHINE\Software\Classes содержит параметры по умолчанию, которые относятся ко всем пользователям локального компьютера. Параметры, содержащиеся в разделе HKEY_CURRENT_USER\Software\Classes, переопределяют принятые по умолчанию и относятся только к текущему пользователю. Раздел HKEY_CLASSES_ROOT включает в себя данные из обоих источников. Кроме того, раздел HKEY_CLASSES_ROOT предоставляет объединённые данные программам, написанным под ранние версии Windows. Изменения настроек текущего пользователя выполняются в разделе HKEY_CURRENT_USER\Software\Classes. Модификация параметров по умолчанию должна производиться в разделе HKEY_LOCAL_MACHINE\Software\Classes. Данные из разделов, добавленных в HKEY_CLASSES_ROOT, будут сохранены системой в разделе HKEY_LOCAL_MACHINE\Software\Classes. Если изменяется параметр в одном из подразделов раздела HKEY_CLASSES_ROOT и такой подраздел уже существует в HKEY_CURRENT_USER\Software\Classes, то для хранения информации будет использован раздел HKEY_CURRENT_USER\Software\Classes, а не HKEY_LOCAL_MACHINE\Software\Classes.

HKEY_CURRENT_CONFIG
Данный раздел содержит сведения о профиле оборудования, используемом локальным компьютером при запуске системы. Является ссылкой на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current

HKEY_DYN_DATA
Данный раздел имеется только в реестре ОС семейства Windows 9x/ME. Содержит динамически изменяемые данные о компьютере (загрузка процессора, размер файла подкачки и т. п.).

Теперь немного практики:

Функция RegCreateKey(HKEY hKey, LPCTSTR lpSubKey, PHKEY phkResult); – в MSDN сказано, что эта функция предназначена только для совместимости с 16-разрядными версиями Windows. Приложения должны использовать функцию RegCreateKeyEx.

Функция RegCreateKeyEx() – Создает указанный раздел реестра. Если раздел уже существует, функция открывает его.

Примечание: ключевые имена не чувствительны к регистру.

1
2
3
4
5
6
7
8
9
10
11
LONG WINAPI RegCreateKeyEx(
      HKEY hKey,
      LPCTSTR lpSubKey,
      DWORD Reserved,
      LPTSTR lpClass,
      DWORD dwOptions,
      REGSAM samDesired,
      LPSECURITY_ATTRIBUTES lpSecurityAttributes,
      PHKEY phkResult,
      LPDWORD lpdwDisposition
);

hKey – Этот параметр может быть одним из следующих предопределенных значений:
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

Он определяет ветвь реестра в которой функция создаст необходимый нам раздел.

lpSubKey – Название раздела, который эта функция открывает или создает. Раздел должен быть указан с полностью, со всеми подразделами которые ему предшествуют, он может быть до 32 вложений в глубину.

Reserved – Этот параметр зарезервирован и всегда должен быть равен NULL

lpClass – Указатель на строку которая содержит описание класса раздела. Может быть проигнорирован и равен NULL.

dwOptions – Этот параметр может быть одним из следующих значений:
REG_OPTION_BACKUP_RESTORE – Если этот флаг установлен, функция игнорирует параметр samDesired и пытается открыть раздел, с правами необходимыми для резервного копирования или восстановления ключа. Если вызывающий поток имеет привилегию SE_BACKUP_NAME , ключ открывается с правами доступа ACCESS_SYSTEM_SECURITY и KEY_READ. Если вызывающий поток имеет привилегию SE_RESTORE_NAME, ключ открывается с правами ACCESS_SYSTEM_SECURITY и KEY_WRITE. Если обе привилегии включены, ключ комбинирует права доступа для привилегий.
REG_OPTION_CREATE_LINK – Указывает на то, что этот ключ является символической ссылкой.
Символические ссылки должны быть использованы только когда это абсолютно необходимо для совместимости приложений.
REG_OPTION_NON_VOLATILE – значение по умолчанию. Информация хранится в файле и сохраняется при перезагрузке системы.
REG_OPTION_VOLATILE – информация хранится в памяти и не сохраняется, когда соответствующий раздел реестра выгружается.

samDesired – определяет права доступа для ключа, который будет создан.

lpSecurityAttributes – Указатель на структуру SECURITY_ATTRIBUTES. Если параметр равен NULL, то описатель раздела не наследуется порожденным (дочерним) процессом. В эту структуру, входит дескриптор защиты раздела. Если параметр равен NULL, раздел получает дескриптор защиты по умолчанию. Список управления доступом (ACL) в заданном по умолчанию дескрипторе защиты для раздела, наследуются от родительского раздела.

phkResult – Указатель на переменную, которая получает дескриптор открытого или созданного раздела.

lpdwDisposition – Указатель на переменную, которая получает одно из следующих значений:
REG_CREATED_NEW_KEY – Раздел не существует, и был создан.
REG_OPENED_EXISTING_KEY – Раздел существовал и был просто открыт без изменений.

Возвращаемое значение

Если функция завершается успешно, возвращаемое значение ERROR_SUCCESS.

Если функция завершается с ошибкой, возвращается значение кода ошибки отличное от нуля, которые определены в winerror.h.

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>