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