Работа с Системным реестром в C++ Builder (Класс TRegistry)

В этой статье разберем работу с реестром, но сперва определим зачем это нужно. Реестр (Registry) - это регистрационная база данных Windows и ее приложений. Раньше все установки записывались в *.ini файлы (например WINDOWS.INI), но за частую в них хранилось несколько сотен байт и их было много, что не очень хорошо. Сейчас все установки и параметры, такие как положение окна при последнем завершение приложения, расположение нужных файлов, установки интерфейса – все это хранится в реестре.

Чтобы посмотреть что из себя представляет реестр, запустите программу (Пуск->Выполнить) regedit.exe из каталога Windows, которая может и изменять реестр. По сути это иерархический набор ключей. Необходимо заметить три особенности:

1. Все ключи могут иметь различное количество значений разных типов;
2. Ключ может иметь подключи;
3. В любом ключе есть значение «По умолчанию»;

Система ключей очень похожа на файловую систему, да и Regedit похож на проводник. Но надо отметить одну особенность: реестр имеет шесть стандартных корневых ключей, и этого не изменить.

Для работы с реестром, есть и стандартные функции API, но в C++ Builder имеется класс TRegistry для работы с реестром, который мы и рассмотрим. TRegistry имеет четыре свойства:

CurentKey: содержит текущее значение ключа. Значение ключа – это целое число, которое идентифицирует ключ. Обычно от этого свойства мало толку.
RootKey: содержит строку - имя текущего корневого ключа (по умолчанию \HKEY_CURENT_USER).
CurrentPath: содержит строку - имя и путь текущего ключа ,без корневого.
LazyWrite: определяет – предавать управление приложению во время записи данных в ключ (true), или не передавать до тех пор пока запись не завершится (false).

Также класс Tregistry содержит несколько методов для работы с реестром. Такие как:

CloseKey - закрывает ключ и записывает в него данные.
CreateKey - создает ключ, но не открывает его.
DeleteKey - удаляет любой ключ, для удаления текущего можно просто передать пустую строку.
GetKeyNames - возвращает потомку TStrings все его подключи.
GetValueNames - возвращает имена всех элементов ключа.
KeyExists - true - если указанный ключ существует, false – если нет.
OpenKey() - открывает указанный ключ, имеет два параметра. Второй параметр отвечает за то создавать ключ если он не существует или нет (true, false).
ValueExists - true – если указанный элемент данных существует.

LoadKey, SaveKey -эти методы загружают и сохраняют ключ на диске.

ReadBool - этот и следующие методы читают из указанного элемента ключа данные определенного типа.
ReadDateTime
ReadFloat
ReadInteger
ReadString

WriteBinaryData - этот и следующие методы записывают в указанный элемент ключа данные соотествующего типа.
WriteBool
WriteDateTime
WriteFloat
WriteInteger
WriteString

Механизм работы с реестром примерно следующий:

1. Открыть ключ (OpenKey())
2. Прочитать или записать данные
3. Закрыть ключ (CloseKey()), хотя деструктор класса Tregistry и может закрыть ключ сам, но это поможет при одиночном или последнем чтении.

Пример чтения из реестра:

			
TRegistry regKey = *new TRegistry();
bool keyGood = regKey.OpenKey("C++Builder Test", false);
if (!keyGood) return;
int top = regKey.ReadInteger("Top");
int left = regKey.ReadInteger("Left"); 
int width = regKey.ReadInteger("Width");
int height = regKey.ReadInteger("Height");
delete regKey;
			  
			  

Если кого смущает объявление regKey – это указатель –тип ссылки.

Отметим две особенности:
Смена корневого ключа производится свойством RootKey, например
regKey.RootKey="HKEY_CLASSES_ROOT";
Обращение к параметру ключа по «умолчанию» производится указанием вместо параметра ключа пустой строки:
WS=regKey.ReadString("");

 

Информация о статье "Работа с Системным реестром в C++ Builder (Класс TRegistry)"

Автор DeVoid | Сайт http://devoid.com.ua | Добавлена 26 Августа 2007 | Просмотрели 10014 раз

  • Digg it!
  • Delicious
  • +МоёМесто.ru
  • Добавить страницу к Мистеру Вонгу
  • Добавить страницу к Мистеру Вонгу

Комментарии КОММЕНТАРИИ

Комментариев еще нет.

Зарегистрируйтесь или выполните Вход для того чтобы оставлять комментарии