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 |