20.5.2. Системный реестр Windows

Системный реестр Windows - это общедоступная база данных, хранящая индивидуальную для каждого компьютера настроечную информацию, используемую программным обеспечением. Данные в реестре упорядочены в древовидные структуры, состоящие из узлов, которые в терминологии Windows называются ключами. Каждый ключ имеет один родительский ключ, один или несколько дочерних ключей и ноль или несколько параметров типа <имя_парамет-ра>=<значение>, Исключение представляют, корневые ключи (они не имеют родителей) и дочерние ключи низшего уровня (они не имеют дочерних ключей). По умолчанию несистемное программное обеспечение регистрирует свою информацию в корневом ключе с именем hkey_current_user. Для просмотра/коррекции системного реестра используется системная утилита regedit.exe. Системному реестру Windows соответствует объект класса TRegistry.

Методы класса TRegistry:

procedure CioseKey; | Записывает информацию в ключ и закрывает его
constructor Create; | Создает объект класса TRegistry. Устанавливает в RootKey значение hkeycurrent - user и в LazyWrite значение True
function CreateKey(const Key: String): Boolean; | Создает ключ с именем Key. Если имя начинается символом “\”, ключ является подключом корневого ключа, в противном случае - подключом текущего ключа
function DeleteKey(const Key: String): Boolean; | Удаляет ключ Key и возвращает True, если операция прошла успешно
function DeleteValue(const Name: String): Boolean; | В текущем узле удаляет значение параметра с именем Name
destructor Destroy; | Уничтожает объект TRegistry

TRegDataType == (rdUnknown,

rdString, rdExpandString, rdlnteger, rdBinary) ;

TRegDataInfo = record

RegData: TRegDataType;

DataSize: Integers-

end;

Возвращает в параметре value значение, определяющее тип данных для параметра сименем valueName текущего ключа: rdunknown - неизвестный тип; rdString - стро

ковый тип;rdExpandString - значением

является строка, описывающая переменную окружения Windows, например “%РАТН%”;

function GetDataInfo(const ValueName: String; var Value: TRegDataInfo) : Boolean; | rdlnteger - целочисленный тип; rdBinary - двоичный тип (набор битов)
function GetDataSize(const Valu- eName: String): Integer; | Возвращает длину значения параметра с именем valueName в текущем узле
TRegDataType = (rdUnknown, rdString, rdExpandString, rdlnteger, rdBinary) ; function GetDataType(const ValueName: String): TRegDataType; | Возвращает значение, определяющее тип данных для параметра с именем ValueMame текущего ключа (см. метод GetDataInfo)

TRegKeyInfo = record

NumSubKeys: Integer;

MaxSubKeyLen: Integer;

NumValues: Integer;

MaxValueLen: Integer;

MaxDataLen: Integer;

FileTime: TFileTime;

end;

function GetKeyInfo(var Value:

TRegKeyInfo): Boolean;

Возвращает в параметре Value информацию о текущем узле: - NumSubKeys количество дочерних узлов;MaxSubKeyLen - максимальная длина имени дочернего узла; NumValues - количество параметров; Мах-valueben - максимальная длина имени параметра; MaxDataLen - максимальна длина параметра; FileTime - время последнего обновления ключа

procedure GetKeyNames(Strings:TStrings) ; | Возвращает в параметре strings имена всех дочерних ключей
procedure GetValueNames(Strings:TStrings) ; | Возвращает в параметре Strings имена всех параметров
function HasSubKeys: Boolean; | Возвращает True, если ключ имеет дочерние ключи
function KeyExists(const Key: String): Boolean; | Возвращает True, если существует ключ с именем Key
function LoadKey(const Key, File- Name: String): Boolean; | Создает ключ с именем Key как дочерний ключ корневого ключа и загружает из файла FileName его содержимое (параметры и все подключи)
procedure MoveKey(const OldName, NewName: String; Delete: Boolean) ; | Копирует или перемещает ключ OldName в ключ NewName: Delete -содержит True для перемещения
function OpenKey(const Key: String; CanCreate: Boolean): Boolean; | Открывает существующий или создает и открывает новый ключ с именем Key и воз вращает True, если операция прошла успешно. CanCreate разрешает/запрещает создание ключа, если он не существует
function ReadBinaryData(const Name: String; var Buffer; BufSize: Integer): Integer; | Копирует не более Bufsize байт в переменную Buffer из параметра с именем Name. Возвращает количество действительно скопированных байтов
function ReadXXXX(const Name: String): YYYY; | Возвращает значение параметра типа yyyy с именем Name
function RegistryConnect(const UNCName: String): Boolean- | Разрешает удаленному компьютеру ONCName доступ к системному реестру вашего компьютера
procedure RenameValue(const Old Name, NewName: Strings; | Переименовывает параметр OldName
function ReplaceKey(const Key FileName, BackUpFileName: String): Boolean; | Заменяет содержимое ключа Key содержимым файла FileName.BackUpFileName -имя файла, в котором будет сохраняться старое содержимое ключа
function RestoreKey(const Key, FileName: String): Boolean; | Считывает содержимое ключа Key из файла FileName
function SaveKey(const Key, File Name: String): Boolean; | Сохраняет содержимое ключа Key в файле FileName
function ValueExists(const Name: String): Boolean; | Возвращает True, если параметр с именем Name имеет значение
procedure WriteBinaryData(const Name: String; var Buffer; Buf- Size: Integer) ; | Копирует не более Bufsize байтов из буфера Buffer в параметр с именем Name
procedure WriteXXXX(const Name: String; Value: YYYY); | Записывает в параметр с именем Name данные Типа YYYY

Delphi создает надстройку над классом TRegistry для того, чтобы манипуляция с системным реестром Windows была подобна манипуляциям с файлами инициации. Эта надстройка инкапсулируется в классе TRegIniFile.

Класс TRegIniFile имеет свойство FileName: String, Хранящее имя ключа, для которого будут осуществляться нужные действия. Эти действия реализуются следующими методами класса:

constructor Create(const FileName : String) ; | Создает объект класса TRegIniFile и связывает его с ключом FileName
procedure DeleteKey(const Section, Ident: String); | Удаляет параметр с именем Ident в ключе Section
procedure EraseSection(const Section : String) ; | Удаляет ключ section со всеми его параметрами и под ключами
function ReadBool(const Section, Ident: String; Default: Boolean): Boolean; | Возвращает значение логического параметра с именем Ident в ключе section
function Readlnteger(const Sec tion, Ident: String; Default: Longint): Longint; | Возвращает значение целочисленного параметра с именем Ident в ключе Section
procedure ReadSection(const Section: String; Strings: TString); | Возвращает в Strings имена всех параметров ключа Section
procedure ReadSections(Strings:TStrings); | Возвращает в Strings имена всех ключей, связанных с текущим ключом
procedure ReadSectionValues(const Section: String; Strings: TStrings) ; | Возвращает в Strings значения всех пара метров ключа section
function ReadString(const Sec tion, Ident, Default: String):String; | Возвращает значение строкового параметра с именем Ident в ключе section
procedure WriteBool(const Sec tion, Ident: String; Value: Boolean) ; | Записывает логическое значение value в параметр Ident ключа section
procedure Writelnteger(const Sec tion, Ident: String; Value: Longint) ; | Записывает целочисленное значение Value в параметр Ident ключа Section
procedure WriteString(const Sec tion, Ident, Value: String); | Записывает строковое значение value в параметр Ident ключа Section