|
|
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 |
|
|