Немного теории:
Реестр 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.
0 Комментарии。