Реферат: Функции управления реестром Windows
Третий аргумент - Reserved -зарезервирован и должен быть равным нулю.
Четвертый аргумент - lpClass - указатель на строку, определяющую класс создаваемого ключа.
Очередной, пятый аргумент - dwOptions, определяет опции создаваемого ключа. Этот аргумент может принимать одно из значений:
• REG_OPTION_VOLATILE
• REG_OPTION_NON_VOLATILE.
В Windows 9x первое значение не используется.
Второе значение указывает, что при перезагрузке системы значение этого ключа сохраняется, т. е. информация сохраняется в файле, а не в памяти.
Следующий, шестой аргумент - samDesired, определяет маску доступа к ключу. Этот параметр представляет собой битовую шкалу и может быть комбинацией флагов, приведенных в табл.2.
Таблица 2 Флаги, составляющие маску доступа к ключу
Флаг | Описание |
KEY_QUERY_VALUE | Права запрашивать данные подключен |
KEY_SET_VALUE | Права устанавливать данные подключен |
KEY_CREATE_SUB _KEY | Права создавать подключи |
KEY_ENUMERATE_SUB_ KEY | Права перебирать подключи |
KEY_NOTIFY | Права изменять нотификацию |
KEY_CREATE LINK | Права создавать символическую связь |
KEY_READ | (STANDARD RIGHTS READ) KEY_QUERY_VALUE | KEY_ENUMERATE SUB_KEYS | KEY_NOTIFY |
KEY_WRITE | (STANDARD RIGHTS WRITE) KEY_SET_VALUE | KEY_CREATE_SUB_KEY |
KEY_EXECUTE | KEY_READ |
KEY_ALL_ACCESS | (STANDARD RIGHTS ALL) KEY_QUERY VALUE | KEY_SET_VALUE | KEY_CREATE _SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_CREATE_SUB_KEY | KEY_NOTIFY | KEY _CREATE_LINK |
Седьмой аргумент - lpSecurityAttributes - указатель на структуру типа SECURITY_ATTRIBUTES, которая определяет атрибуты безопасности создаваемого ключа. Windows 9х не поддерживает безопасность, поэтому этот параметр игнорируется.
Туда, куда указывает восьмой аргумент - phkResult - записывается хэндл созданного ключа.
И наконец, последний, девятый аргумент - lpdwDisposition - указывает место, куда будет записана информация о том, что произошло с ключом. Дело в том, что если с помощью этой функции производится попытка создать ключ, который уже существует, то ключ не создается, а просто открывается. Поэтому приложению необходимо знать, что произошло при создании ключа.
Если ключ был создан, то в поле, определяемое lpdwDisposition, записывается значение REG_CREATED_NEW_KEY.
В том случае, если ключ существовал и был открыт, записываемое значение равно REG_OPENED_EXISTING_KEY.
Это поле может быть использовано и для того, чтобы узнать, не открыт ли ключ другим приложением. Открытый ключ доступен только тому приложению, которое создало его. Таким образом, если приложение открывает заведомо существующий ключ и получает в ответ значение REG_CREATED_NEW_KEY, то можно сделать вывод о том, что ключ занят другим приложением.
Для ОТКРЫТИЯ подключа системного реестра с требуемым типом доступа служит функция RegOpenKeyEx(). Эта функция не создает ключ, если он не существует. Вместо этого она возвращает код ошибки.
LONG RegOpenKeyEx (HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, REGSAM samDesired, PHKEY phkResult)
Параметры:
hKey – хэндл открываемого ключа.
lpSubKey – указатель на строку, завершающуюся нулевым символом в конце и содержащую имя нового ключа.
Reserved – резерв.
samDesired – доступ к ключу с требуемым уровнем защиты.
phkResult – указатель на переменную HKEY, которой присваивается хэндл нового ключа.
Возвращаемое значение: если ключ создан или открыт удачно, то значение ERROR_SUCCESS. Любое другое значение является ошибкой.
2. Закрытие ключей и сохранение произведенных в них изменений
Закрывается ключ с помощью функции RegCloseKey(). При этом освобождаются любые связанные с данным ключом системные ресурсы. Закрытие ключа отнюдь не вызывает задержку операций записи, происходящих непосредственно после выполнения данной функции. Синтаксис функции следующий:
LONGRegCloseKey (HKEYhKey)
Параметры:
hKey – хэндл закрываемого ключа.