Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба5.doc
Скачиваний:
4
Добавлен:
12.11.2019
Размер:
976.9 Кб
Скачать

1.2. Чтение параметров раздела реестра

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

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

Функция RegQueryValueEx считывает тип и значение по имени параметра из открытого раздела.

LONG RegQueryValueEx(

HKEY hKey,

// дескриптор раздела

LPTSTR lpValueName,

// указатель на имя раздела

LPDWORD lpReserved,

// зарезервировано

LPDWORD lpType,

// указатель на буфер для типа параметра

LPBYTE lpData,

// указатель на буфер для значения параметра

LPDWORD lpcbData

// указатель буфер, содержащий размер данных

);

hKey - идентифицирует текущий открытый раздел или любой из следующих предопределенных разделов:

HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS

lpValueName указывает на строку, оканчивающуюся нулевым символом, содержащую имя параметра, которое запрашивается

lpReserved – зарезервирован, должен быть равным нулю

lpType – указывает на переменную, в которую помещается тип параметра раздела, может быть равен NULL, если не требуется.

Некоторые типы параметров:

Таблица 2.3. Типы параметров (значений)

Тип

Описание

REG_BINARY

Двоичные данные в любой форме

REG_DWORD

32 битное значение

REG_MULTI_SZ

Массив строк, заканчивающийся двойным нулевым символом

REG_NONE

Неопределенный тип

REG_SZ

Строка, оканчивающаяся нулевым символом

lpData - указывает на буфер, в который будет помещено значение параметра, этот параметр может быть NULL, если значение не требуется.

lpcbData – указатель на переменную, определяющую размер в байтах буфера для приема значения, на который указывает lpData, в случае если lpData равен NULL, то в lpcbData возвращается размер значения в байтах, может равняться NULL только в том случае, если lpData равен NULL.

Возвращает ERROR_SUCCESS в случае успешного завершения, в противном случае возвращает ненулевой код ошибки.

Раздел hKey должен быть открыт с доступом не меньшим KEY_QUERY_VALUE.

Пример вызова:

// считывается размер значение

if (RegQueryValueEx(hKeyRes, ValueName,

NULL, &dwType, NULL, &dwSize)==ERROR_SUCCESS)

{

pBuffer=new unsigned char[dwSize];

/* считывается значение параметра из раздела реестра */

if ((RegQueryValueEx(hKeyRes, ValueName,NULL, &dwType, pBuffer, &dwSize))==ERROR_SUCCESS && pBuffer!=NULL)

{

. . .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]