Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО от Тихомирова / Уч пособие по КР СПО 2009 Ред 15-11-09.doc
Скачиваний:
19
Добавлен:
08.06.2015
Размер:
842.24 Кб
Скачать

1.4. Методы и средства работы с реестром

1.4.1. Открытие и закрытие родительского раздела

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

RegOpenKeyEx

( HKEY_LOCAL_MACHINE, // имя корневого раздела

'SOFTWARE\Borland', // имя открываемого подраздела

0, // зарезервированное значение

KEY_ALL_ACCESS, // вид доступа к разделу - полный доступ

hkkey ) //возвращаемое значение - Handle раздела - типа HKEY.

При успешном открытии возвращается ERROR_SUCCESS, т.е. 0. Если подраздел не существует, возвращается 2.

После окончания работы с подразделом его необходимо закрыть, используя функцию

RegCloseKey (hkkey);

1.4.2. Создание подразделов

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

RegCreateKeyEx

( HKEY_LOCAL_MACHINE, // имя корневого раздела

'SOFTWARE\myrazd', // имя создаваемого подраздела

0, // резерв, всегда 0

'', // имя класса или типа объекта раздела - пустая строка

REG_OPTION_NON_VOLATILE, // постоянный раздел

KEY_ALL_ACCESS, // вид доступа к разделу

nil, // атрибут безопасности

hkkey, // описатель раздела, тип HKEY

@result ) : integer - код ошибки // Result - типа DWORD.

Параметр result типа DWORD принимает значения REG_CREATED_NEW_KEY или REG_OPENED_EXISTING_KEY.

1.4.3. Установка значения параметра

Функция RegSetValueEx создает в открытом или созданном разделе пару параметр-значение. Пример вызова функции

RegSetValueEx

( описатель созданного или открытого раздела,

имя пары параметр-значение,

0, // резерв - всегда 0

REG_SZ, // тип значения - строка с 0 в конце

Strd, // переменная типа Pchar, которой присвоено необходимое значение Length (strd) //длина значения

) ;

1.4.4. Получение значения параметра

Для чтения значения параметра используется функция RegQueryValueEx.

Необходимо описать переменные:

dwType : DWORD - тип возвращаемого значения

buf : Array [1..n] of char -массив для получения значения строкового параметра

len : DWORD - длина буфера

и присвоить переменным значения dwType := REG_SZ;

len:= N;

Вызов функции для чтения значения параметра

Error := RegQueryValueEx (

hkkey, // handle открытого раздела

имя параметра, // имя должно быть записано в апострофах

nil, // зарезервированное значение

@dwType, // адрес типа возвращаемого значения

@buf, // адрес буфера

@len );

if Error = ERROR_SUCCESS then // если нет ошибки - получить значение параметра

for k:=1 to len-1 do str := str + buf [ k ];

Получение информации из открытого раздела - RegQueryInfoKey (). Функция возвращает:

количество подразделов;

длину самого длинного имени подраздела;

количество пар;

длину самого длинного имени параметра;

длину самого длинного значения;

Просмотр пар параметр- значение - функция RegEnumValue (). Среди прочего, возвращает информацию о типе значения данной пары.