Дескриптор ключа

type
HKEY = Integer;

Класс TRegistry


CurrentKey

Содержит дескриптор ключа открытого в данный момент или 0, если не открыто ничего.

property CurrentKey:HKEY; (только чтение)

Если вы будете открывать ключ, то сюда автоматически поместится дескриптор, который вам выделит Windows. Если вы не выходите за рамки объекта TRegistry , то вам не нужен дескриптор.


RootKey

Содержит дескриптор корневого ключа, через который и осуществляется доступ к реестру.

property RootKey:HKEY;

При создании объекта данное свойство автоматически устанавливается равным HKEY_CURRENT_USER. Если вам необходимо попасть в другой корневой ключ, то вы назначаете имя этого ключа этому свойству. Имена корневых ключей могут иметь следующие значения:

HKEY_CLASSES_ROOT Определение документов (расширения документов, например .txt) и свойства связанные с ними
HKEY_CURRENT_USER Установки текущего пользователя
HKEY_LOCAL_MACHINE Данные об аппаратной и программной конфигурации
HKEY_USERS Установки всех пользователей
HKEY_CURRENT_CONFIG Отличия текущей конфигурации от стандартной
HKEY_DYN_DATA Сведения о функционировании операционной среды

CurrentPath

Содержит полный путь от корневого ключа к текущему ключу.

property CurrentPath:string; (только чтение)

Сразу после создания объекта или после закрытия ключа свойство пустое. По мере вашего продвижения в глубь дерева реестра в этом свойстве накапливается полный путь. CurrentPath всегда является относительным путем, т.е. относительно корневого ключа указанного в свойстве RootKey. Именно по этому свойство не содержит лидирующего слеша. Когда при открытии очередного ключа вы указываете относительный путь, метод OpenKey сам создает новый путь, объединяя полный путь, хранящийся в данном свойстве и указанный вами относительный путь. При этом получившийся путь является относительным к корневому ключу. После успешного открытия новый относительный путь помещается в данное свойство. Если вы не выходите за рамки объекта TRegistry, то данное свойство можно использовать, разве что, для определения своего местонахождения на дереве реестра.


LazyWrite

Определяет возможность отложенной записи изменений реестра на диск если True. И немедленная запись если False.

property LazyWrite:Boolean;

При создании объекта данное свойство устанавливается равным True. Отложенная запись позволяет операционной среде самой спланировать время записи изменений на диск, а пока она разместит их в оперативной памяти (так называемое кэширование). Это значит, что если производились изменения данных в ключе, то сразу после операции закрытия ключа, которая автоматически выполняется при открытии нового ключа, операционная среда вернет управление вашей программе, а запись осуществит позже, когда будет время. При этом возможна задержка в несколько секунд в зависимости от загруженности системы. При немедленной записи изменения производятся сразу же, но будьте осторожны, такой режим требует много системных ресурсов, а ваша программа продолжится только после окончания операции физической записи на диск. Понятно, что программа будет работать медленно (разница между записью в оперативную память и на диск).


CloseKey

Записывает измененные данные, если таковые есть, в текущий ключ и закрывает его. Способ записи определяется значением свойства LazyWrite.

procedure CloseKey;

Закрывайте ключ сразу как произвели с ним необходимые вам действия. Не держите долго ключ открытым. Лучше закройте его, а когда будет надо, откроете опять. Реестр, как никак, все-таки база данных, им пользуется система и другие программы.

Некоторые методы объекта TRegistry вызывают CloseKey сразу после чтения из или записи в реестр. Попытка закрыть уже закрытый ключ не опасна и никаких действий не совершает.

Подробнее

Create

Создает объект TRegistry для программы и устанавливает корневой ключ.

constructor Create;

Устанавливает RootKey в HKEY_CURRENT_USER и LazyWrite в True.


CreateKey

Создает новый ключ, если его еще нет, не открывая его.

function CreateKey(const Key:string):Boolean;

Создает ключ с путем указанным в параметре Key. Если ключ уже существует, то не делает ничего. Не изменяет свойство CurrentPath. В случае удачи возвращает True, иначе возбуждает исключение ERegistryException.

Windows при создании ключа открывает его, но данный метод сам закрывает этот ключ, для того чтобы открытым остался только один ключ, который был до этого текущим (таковым он и останется).

Подробнее

DeleteKey

Удаляет ключ по указанному пути, а также все подключи и параметры, входящие в него.

function DeleteKey(const Key:string):Boolean;

Возвращает True в случае успеха и False иначе.

Подробнее

DeleteValue

Удаляет параметр с указанным именем (и имя и значение) для текущего ключа.

function DeleteValue(const Name:string):Boolean;

Возвращает True в случае успеха и False иначе.

Подробнее

GetDataInfo

Дает размер и тип значения параметра по его имени для текущего ключа.

type
TRegDataType = (rdUnknown, rdString, rdExpandString, rdInteger, rdBinary);
TRegDataInfo = record
RegData:TRegDataType;
DataSize:Integer;

end;

Этот тип необходим для сохранения сведений о размере и типе параметра.

function GetDataInfo(const ValueName:string; var Value:TRegDataInfo):Boolean;

ValueName имя запрашиваемого параметра. Переменная Value возвращает сведенья о параметре. При этом поле DataSize содержит размер значения параметра в байтах (для строкового значения - длина строки, включая терминальный ноль), а поле RegData определение типа. Возможны следующие имена идентификаторов:

rdUnknown неизвестный тип
rdString строка
rdExpandString строка, описывающая переменную окружения Windows вроде "%PATH%"
rdInteger целое 32 бита
rdBinary двоичный, любой набор битов (т.е. не типизированный)

Возвращает True в случае успеха. И False иначе.

Подробнее

GetDataSize

Дает размер (длину) значения параметра с указанным именем для текущего ключа.

function GetDataSize(const ValueName:string):Integer;

Для определения размера вызывается метод GetDataInfo. Если вызов прошел успешно, то возвращается значение поля DataSize. Если параметра с таким именем нет, возвращается -1.

Подробнее

GetDataType

Дает значение, определяющее тип данных для параметра с указанным именем в текущем ключе.

type TRegDataType = (rdUnknown, rdString, rdExpandString, rdInteger, rdBinary);

function GetDataType(const ValueName:string):TRegDataType;

Вызывает метод GetDataInfo, и если вызов прошел успешно, то возвращается значение поля RegData, которое может иметь следующие значения:

rdUnknown неизвестный тип
rdString строка
rdExpandString строка, описывающая переменную окружения Windows вроде "%PATH%"
rdInteger целое 32 бита
rdBinary двоичный, любой набор битов (т.е. не типизированный)

Если параметра с таким именем нет, возвращается rdUnknown.

Подробнее

GetKeyInfo

Дает информацию о текущем ключе.

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 количество параметров
MaxValueLen максимальная длина имени параметра в байтах
MaxDataLen максимальная длина значения параметра
FileTime время последнего обновления ключа (в Windows95 не поддерживается всегда 0)
Подробнее

GetKeyNames

Возвращает список всех имен дочерних ключей принадлежащих текущему ключу.

procedure GetKeyNames(Strings:TStrings);

В качестве параметра нужно использовать потомка TStrings, например TStringList, который должен быть создан заранее. Метод очищает список и заполняет его именами дочерних ключей.

Подробнее

GetValueNames

Возвращает список всех имен параметров принадлежащих текущему ключу.

procedure GetValueNames(Strings:TStrings);

В качестве параметра нужно использовать потомка TStrings, например TStringList, который должен быть создан заранее. Метод очищает список и заполняет его именами параметров.

Подробнее

HasSubKeys

Указывает на наличие дочерних ключей у текущего ключа.

function HasSubKeys:Boolean;

Возвращает True, если текущий ключ имеет хотя бы один дочерний ключ, иначе False. Вызывает метод GetKeyInfo и на основании возвращенной информации определяет наличие дочерних ключей.

Подробнее

KeyExists

Проверяет наличие ключа по указанному пути.

function KeyExists(const Key:string):Boolean;

Пытается открыть и сразу же закрыть ключ. Если удается открыть, то возвращает True, ключ существует. Иначе False, ключ не существует.

Подробнее

LoadKey

Создает указанный ключ как дочерний корневого ключа и сохраняет в нем улей (часть реестра), находящийся в отдельном файле, который предварительно должен быть создан с помощью метода SaveKey.

function LoadKey(const Key, FileName:string):Boolean;

Загрузка происходит только в вершину реестра, поэтому в качестве корня могут быть использованы лишь ключи HKEY_USERS, HKEY_LOCAL_MACHINE. При использовании других дескрипторов, ни создание дочернего ключа, ни загрузка происходить не будут, а метод вернет False. Параметр Key не путь, а имя дочернего ключа. Параметр FileName полный путь к файлу при этом если имя не содержит путь, то файл берется из корневого каталога Windows. Файл должен быть предварительно создан с помощью метода SaveKey. В Windows95 функция не поддерживает длинное имя файла, по этому надо использовать его короткое имя. Возвращает True в случае успеха и False иначе.

Загруженный ключ теряется после перезагрузки системы, но до этого не может быть удален никак иначе, как только вызовом метода UnLoadKey.

Подробнее

MoveKey

Переносит ключ, его дочерние ключи и параметры в новое место и с новым именем.

procedure MoveKey(const OldName, NewName:string; Delete:Boolean);

По указанному в OldName пути открывает ключ-источник, предназначенный для переноса. По указанному в NewName пути создает и открывает ключ-приемник, куда будет осуществляться перенос. Рекурсивно копирует все параметры и дочерние ключи. Если аргумент Delete равен True ,то удаляет ключ-источник (перенос), иначе оставляет (копирование). Закрывает оба ключа и все ключи, открываемые во время переноса. Если ключ приемника окажется дочерним по отношению к источнику (любого уровня вложенности), произойдет зацикливание. Если ключ-источник не существует или уже существует ключ-приемник, то метод прекращает выполнение. Возникающие ошибки игнорируются, исключение не возбуждается и ничего не сообщается. Нет никакой возможности узнать об ошибке, кроме как сравнить ключи источника и приемника. Не удобный и опасный метод.

Подробнее

OpenKey

Открывает существующий, или создает и открывает новый ключ.

function OpenKey(const Key:string; CanCreate:Boolean):Boolean;

Аргумент CanCreate разрешает, если True, или запрещает, если False, создание ключа, если он не существует. Делает текущим указанный ключ, предварительно закрыв предыдущий текущий ключ. Устанавливает свойствам CurrentKey и CurrentPath новые значения. Возвращает True в случае успеха и False иначе.

Подробнее

ReadBinaryData

Для текущего ключа читает и помещает в буфер двоичное значение указанного параметра.

function ReadBinaryData(const Name:string; var Buffer; BufSize:Integer):Integer;

Помещает в переменную Buffer значение параметра с именем Name. Значение параметра должно иметь тип rdBinary, а размер буфера, передаваемый аргументом BufSize, должен быть не меньше длинны значения параметра, иначе возбуждается исключение. При удачном завершении метод возвращает размер данных (в байтах) помещенных в буфер. Если параметра с указанным именем не существует, то метод возвращает 0.

Подробнее

ReadBool

Для текущего ключа возвращает логическое представление значения указанного параметра.

function ReadBool(const Name:string):Boolean;

Поскольку логический тип отсутствует в реестре, используется значение целого типа. При этом метод возвращает False, если значение параметра равно нулю и True, если оно отлично от нуля. Значение параметра должно иметь тип rdInteger, иначе возбуждается исключение.

Подробнее

ReadCurrency

Для текущего ключа возвращает денежное представление значения указанного параметра.

function ReadCurrency(const Name:string):Currency;

Поскольку денежный тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение.

Подробнее

ReadDate

Для текущего ключа возвращает дата-время представление значения указанного параметра.

function ReadDate(const Name:string):TDateTime;

Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение. Вызывает метод ReadDateTime без каких либо преобразований.

Подробнее

ReadDateTime

Для текущего ключа возвращает дата-время представление значения указанного параметра.

function ReadDateTime(const Name:string):TDateTime;

Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение.

Подробнее

ReadFloat

Для текущего ключа возвращает вещественное представление значения указанного параметра.

function ReadFloat(const Name:string):Double;

Поскольку вещественный тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение.

Подробнее

ReadInteger

Для текущего ключа возвращает целое значение указанного параметра.

function ReadInteger(const Name:string):Integer;

Значение параметра должно иметь тип rdInteger, иначе возбуждается исключение.

Подробнее

ReadString

Для текущего ключа возвращает строковое значение указанного параметра.

function ReadString(const Name:string):string;

Создает строку и заполняет ее значением параметра. Значение параметра должно иметь тип rdString или rdExpandString, иначе возбуждается исключение.

Подробнее

ReadTime

Для текущего ключа возвращает дата-время представление значения указанного параметра.

function ReadTime(const Name:string):TDateTime;

Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение. Вызывает метод ReadDateTime без каких либо преобразований.

Подробнее

RenameValue

Меняет имя параметра для текущего ключа.

procedure RenameValue(const OldName, NewName:string);

Копирует значение параметра, удаляет старое имя, создает параметр с новым именем и старым значением. Для успешного выполнения требуется, чтобы существовал параметр со старым и не существовал параметр с новым именем, размер значения параметра отличался от нуля. Об ошибках не сообщает.

Подробнее

ReplaceKey

Заменяет указанный ключ содержимым файла. Замена вступает в силу после перезагрузки системы.

function ReplaceKey(const Key, FileName, BackUpFileName:string):Boolean;

Сохраняет старое имя для ключа, путь к которому указывает строка Key (путь абсолютный или относительный), заменяет все его параметры и дочерние ключи ульем (частью реестра) хранящимся в файле FileName. Файл должен быть предварительно создан с помощью метода SaveKey. Старое содержание ключа сохраняется в файле BackUpFileName. В качестве ключа, участвующего в операции замены, можно использовать только ключи первого уровня вложенности от HKEY_LOCAL_MACHINE или HKEY_USER (т.е. являющиеся непосредственными потомками этих двух ключей). Следовательно, в качестве ключа можно использовать любой корневой ключ, при этом строка Key должна быть равна nil. Или имя любого ключа (но не путь), в том числе и вашего, для ключей HKEY_LOCAL_MACHINE или HKEY_USER. Возвращает True в случае успеха и False иначе.

Обратите внимание, имя ключа сохраняется, а имена дочерних ключей, параметров и их значений заменяются. Замена вступает в силу после перезагрузки системы.

Подробнее

RestoreKey

Загружает в указанный ключ содержимое файла. Только WindowsNT.

function RestoreKey(const Key, FileName:string):Boolean;

Открывает ключ Key и загружает улей (часть реестра) находящийся в файле FileName. Перед возвратом закрывает ключ. Имя ключа сохраняется, а имена дочерних ключей, параметров и их значений заменяются. Файл должен быть предварительно создан с помощью метода SaveKey. Возвращает True в случае успеха и False иначе.

Подробнее

SaveKey

Сохраняет указанный ключ в файле.

function SaveKey(const Key, FileName:string):Boolean;

Открывает ключ и записывает сам ключ, его дочерние ключи и параметры как улей (часть реестра) в указанный файл, и перед возвратом закрывает ключ. Файл, в котором сохраняется ключ, не должен существовать. Файл созданный с помощью этого метода используется методами RestoreKey, ReplaceKey и LoadKey. Возвращает True в случае успеха и False иначе.

Подробнее

UnLoadKey

Удаляет указанный ключ из реестра.

function UnLoadKey(const Key:string):Boolean;

При удалении ключа модификация файла реестра не происходит, т.к. удалятся должен только ключ предварительно созданный с помощью метода LoadKey. Возвращает True в случае успеха и False иначе.

Подробнее

ValueExists

Проверяет наличие параметра с указанным именем для текущего ключа.

function ValueExists(const Name:string):Boolean;

Вызывает метод GetDataInfo для текущего ключа. Возвращает True, если параметр с таким именем существует, иначе False.

Подробнее

WriteBinaryData

Записывает в текущий ключ двоичное значение параметра из буфера. Если параметр с указанным именем не существует, то создает его.

procedure WriteBinaryData(const Name:string; var Buffer; BufSize:Integer);

С помощью метода PutData переписывает данные из буфера как двоичные. Если записать не удается, то вызывается исключение (внутри метода PutData).

Подробнее

WriteBool

Записывает в текущий ключ логическое представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.

procedure WriteBool(const Name:string; Value:Boolean);

Поскольку логический тип отсутствует в реестре, используется значение целого типа. При этом метод записывает 0 для False, и отличное от нуля для True. Значение параметра будет иметь тип rdInteger. Если записать не удалось, возбуждается исключение.

Подробнее

WriteCurrency

Записывает в текущий ключ денежное представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.

procedure WriteCurrency(const Name:string; Value:Currency);

Поскольку денежный тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение.

Подробнее

WriteDate

Записывает в текущий ключ дата-время представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.

procedure WriteDate(const Name:string; Value:TDateTime);

Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение. Вызывает метод WriteDateTime без каких либо преобразований.

Подробнее

WriteDateTime

Записывает в текущий ключ дата-время представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.

procedure WriteDateTime(const Name:string; Value:TDateTime);

Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение.

Подробнее

WriteFloat

Записывает в текущий ключ вещественное представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.

procedure WriteFloat(const Name:string; Value:Double);

Поскольку вещественный тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение.

Подробнее

WriteInteger

Записывает в текущий ключ целое значение указанного параметра. Если параметр с указанным именем не существует, то создает его.

procedure WriteInteger(const Name:string; Value:Integer);

Значение параметра будет иметь тип rdInteger. Если записать не удалось, возбуждается исключение.

Подробнее

WriteString

Записывает в текущий ключ строковое значение указанного параметра. Если параметр с указанным именем не существует, то создает его.

procedure WriteString(const Name, Value:string);

Значение параметра будет иметь тип rdString. Если записать не удалось, возбуждается исключение.

Подробнее

WriteTime

Записывает в текущий ключ дата-время представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.

procedure WriteTime(const Name:string; Value:TDateTime);

Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение. Вызывает метод WriteDateTime без каких либо преобразований.

Подробнее

main_back.gif (3425 bytes)

Используются технологии uCoz