Функция RegCreateKeyEx создает указанный ключ. Если ключ уже существует в реестре, то функция открывает его. Эта функция оставлена для совместимости с Windows версии 3.1. Приложения для Win32 должны использовать функцию RegCreateKeyEx.
LONG 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_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG
Ключ, открытый или созданный функцией RegCreateKeyEx, являются подключами ключа, указанного в параметре hKey. |
lpSubKey |
Адрес нульзаканчивающейся строки, определяющей имя подключа, который эта функция создает или открывает. Указанный подключ должен быть подключем ключа, указанного в параметре hKey. Этот подключ не должен начинатся с знака обратной черты ('\'). Этот параметр не должен быть равен NULL. |
Reserved |
Зарезервирован; должен быть нулевым. |
lpClass |
Адрес нульзаканчивающейся строки, определяющей класс (тип объекта) этого ключа. Этот параметр игнорируется если ключ уже существует. |
dwOptions |
Определяет особые опции для ключа. Этот параметр может быть одним из следующих значений:
Значение: |
Назначение: |
REG_OPTION_NON_VOLATILE   |
Это значение по умолчанию. При перезагрузке системы значение этого ключа сохраняется, т.е. информация сохраняется в файле, а не в памяти. |
REG_OPTION_VOLATILE   |
Windows NT/2000/XP: Информация сохраняется в памяти и не сохраняется при перезагрузке системы. Функция RegSaveKey не сохраняет такие ключи. Этот флаг игнорируется, если ключ уже существует. Это значение игнорируется в Windows 95. |
REG_OPTION_BACKUP_RESTORE   |
Windows NT/2000/XP: Если установлен этот флаг, то функция игнорирует параметр samDesired и пытается открыть ключ с требуемым доступ для резервного сохранения или востановления ключа. Если вызывающий поток имеет включенную привилегию SE_BACKUP_NAME, ключ открывается с доступом ACCESS_SYSTEM_SECURITY и KEY_READ. Если вызывающий поток имее включенную привилегию SE_RESTORE_NAME, ключ открывается с доступом ACCESS_SYSTEM_SECURITY и KEY_WRITE. Если включены обе привилегии, ключ будет иметь комбинированный доступ к обоим привилегиям. В Windows 95 этот параметр игнорируется. |
|
samDesired |
Определяет маску доступа, которая определяет желаемый доступ безопасности для нового ключа. Этот параметр может быть комбинацией из следующих значений:
Значение: |
Назначение: |
KEY_ALL_ACCESS   |
Комбинация из KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, и KEY_SET_VALUE. |
KEY_CREATE_LINK   |
Права создавать символические ссылки. |
KEY_CREATE_SUB_KEY   |
Права создавать подключи. |
KEY_ENUMERATE_SUB_KEYS   |
Права перечислять подключи. |
KEY_EXECUTE   |
Права на доступ ко чтению. |
KEY_NOTIFY   |
Права на изменение нотификации. |
KEY_QUERY_VALUE   |
Права запрашивать данные подключей. |
KEY_READ   |
Комбинация из KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, и KEY_NOTIFY. |
KEY_SET_VALUE   |
Права устанавливать данные подключей. |
KEY_WRITE   |
Комбинация из KEY_SET_VALUE и KEY_CREATE_SUB_KEY. |
|
lpSecurityAttributes |
Адрес структуры SECURITY_ATTRIBUTES которая определяет: может ли возвращенный дескриптор наследоваться дочерними процессами. Если lpSecurityAttributes равен NULL, дескриптор не может наследоваться.
Windows NT/2000/XP: член lpSecurityDescriptor структуры определяет дескриптор безопасности для нового ключа. Если lpSecurityAttributes равен NULL, ключ получает дескриптор безопасности по умолчанию.
Windows 95/98/Me: член lpSecurityDescriptor структуры игнорируется. |
phkResult |
Адрес переменной, куда будет возвращен дескриптор,открываемого или создаваемого ключа. |
lpdwDisposition |
Адрес переменной, куда будет возвращен один из следующих значений:
Значение: |
Назначение: |
REG_CREATED_NEW_KEY   |
Ключ не существует и был создан. |
REG_OPENED_EXISTING_KEY   |
Ключ существует и был запросто открыт без изменений. |
|
Возвращаемые значения:
Если функция успешна, возвращается значение ERROR_SUCCESS.
При ошибке, возвращаемое значение – это код ошибки, объявленный в WINERROR.H. Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM для получения общего описания ошибки.
Замечания:
Ключ, который создает функция RegCreateKeyEx, не имеет значений. Приложение может использовать функцию RegSetValue или RegSetValueEx для установки значений ключей.
Ключ, определенный в параметре hKey, должен быть открытым с доступом KEY_CREATE_SUB_KEY. Для открытия ключа используйте функцию RegCreateKeyEx или RegOpenKeyEx.
Приложение не может создавать ключ под HKEY_USERS или HKEY_LOCAL_MACHINE.
Приложение может использовать RegCreateKeyEx для временного закрытия части реестра. Когда закрывающий процесс создает новый ключ, он получает характерное значение REG_CREATED_NEW_KEY, указывающее на то, он владелец закрытой части реестра. Другой процесс пытается создать тот-же ключ и получает характерное значение REG_OPENED_EXISTING_KEY, указывающее на то, что другой процесс владеет закрытой частью.
Смотрите также:
RegCloseKey, RegCreateKey, RegDeleteKey, RegOpenKey, RegOpenKeyEx, RegSaveKey, SECURITY_ATTRIBUTES
|