Windows - статьи




Программирование для системного реестра на С++ - часть 4


В эту структуру, входит дескриптор защиты раздела. Если параметр равен NULL, раздел получает дескриптор защиты по умолчанию. Список управления доступом (ACL) в заданном по умолчанию дескрипторе защиты для раздела, наследуются от родительского раздела.
  • phkResult Указатель на переменную, получающую описатель открытого или созданного раздела.
  • lpdwDisposition Указатель на переменную, в которую записывается одно из следующих значений.

    REG_CREATED_NEW_KEYРаздел не существует и будет создан
    REG_OPENED_EXISTING_KEYРаздел существует


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

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

    После получения описателя раздела реестра с ним проделывают нужные действия, например считывают или записывают значения параметров. После проделанных операций описатель раздела реестра должен быть корректно закрыт. Для этого существует функция RegCloseKey, прототип которой показан ниже.

    LONG RegCloseKey(HKEY hKey);

  • hKey Описатель открытого раздела, который подлежит закрытию.

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

    Используя вышесказанные функции можно написать следующий код, создающий раздел и закрывающий его.

    HKEY h;

    if(RegCreateKeyEx(HKEY_CURRENT_USER, "12", 0, NULL, REG_OPTION_VOLATILE, KEY_WRITE, NULL, &h, NULL)!=ERROR_SUCCESS) { printf("Could not create the registry key."); abort(); } //делаем определенные действия с разделом RegCloseKey(h);

    В этом примере создается раздел для записи с названием 12, которого уже не будет при следующей загрузке профиля пользователя. Затем корректно освобождаем описатель созданного раздела.

    После того, как раздел создан или открыт в нем могут быть созданы подразделы, считана информация о нем, созданы параметры и т. д. Для каждой из перечисленных операций в Win32 API предусмотрена соответствующая функция.




    Содержание  Назад  Вперед