Работа с Системным реестром в 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 раз
КОММЕНТАРИИ
Комментариев еще нет.
Зарегистрируйтесь или выполните Вход для того чтобы оставлять комментарии
Не менее интересно
- Сохранение настроек программы в реестре
- Как использовать анимированный курсор в C++Builder
- Загрузить и сохранить настройки программы с помощью INI-файлов
- Массивы. Введение в массивы для начинающих.
- Перехват системных сообщений когда программа неактивна
- Работа с графиками и диаграммами (TChart, Series)
- Как создать удобный интерфейс программы
- Как продать свою программу
- Пример создания и работы с DLL
- Вызов WinApi функций из C++Builder


