15 сент. 2010 г.

RegOpenKeyEx


Функция RegOpenKeyEx открывает указанный ключ.
LONG RegOpenKeyEx(
    HKEY hKey, // дескриптор указанного ключа
    LPCTSTR lpSubKey, // адрес имени открываемого подключа
    DWORD ulOptions, // зарезервировано
    REGSAM samDesired, // маска доступа безопасности
    PHKEY phkResult  // адрес дескриптора открытого ключа
);
Параметры:
hKeyИдентифицирует открытый в текущий момент ключ или один из следующих предопределенных значений дескрипторов:

HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG
lpSubKeyАдрес нульзаканчивающейся строки, содержащей имя ключа на открытие. Если этот параметр равен NULL или адрес указывает на пустую строку, функция возвращает тот-же дескриптор, который ей был дан в параметре hKey. В этом случае, функция не закрывает прежде закрыет дескриптор.
ulOptionsЗарезервировано; должно быть нулевым.
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.
phkResultАдрес переменной, в которую возвращается дескриптор открытого ключа.

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

При ошибке, возвращаемое значение – это код ошибки, объявленный в WINERROR.H. Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM для получения общего описания ошибки.
Замечания:
В отличии от RegCreateKeyEx, функция RegOpenKeyEx не создает указанный ключ, если ключ не существует в реестре.