Дескриптор ключа
Класс TRegistry
Содержит дескриптор ключа открытого в данный момент или 0, если не открыто ничего.
Если вы будете открывать ключ, то сюда автоматически поместится дескриптор, который вам выделит Windows. Если вы не выходите за рамки объекта TRegistry , то вам не нужен дескриптор.
Содержит дескриптор корневого ключа, через который и осуществляется доступ к реестру.
При создании объекта данное свойство автоматически устанавливается равным HKEY_CURRENT_USER. Если вам необходимо попасть в другой корневой ключ, то вы назначаете имя этого ключа этому свойству. Имена корневых ключей могут иметь следующие значения:
HKEY_CLASSES_ROOT | Определение документов (расширения документов, например .txt) и свойства связанные с ними |
HKEY_CURRENT_USER | Установки текущего пользователя |
HKEY_LOCAL_MACHINE | Данные об аппаратной и программной конфигурации |
HKEY_USERS | Установки всех пользователей |
HKEY_CURRENT_CONFIG | Отличия текущей конфигурации от стандартной |
HKEY_DYN_DATA | Сведения о функционировании операционной среды |
Содержит полный путь от корневого ключа к текущему ключу.
Сразу после создания объекта или после закрытия ключа свойство пустое. По мере вашего продвижения в глубь дерева реестра в этом свойстве накапливается полный путь. CurrentPath всегда является относительным путем, т.е. относительно корневого ключа указанного в свойстве RootKey. Именно по этому свойство не содержит лидирующего слеша. Когда при открытии очередного ключа вы указываете относительный путь, метод OpenKey сам создает новый путь, объединяя полный путь, хранящийся в данном свойстве и указанный вами относительный путь. При этом получившийся путь является относительным к корневому ключу. После успешного открытия новый относительный путь помещается в данное свойство. Если вы не выходите за рамки объекта TRegistry, то данное свойство можно использовать, разве что, для определения своего местонахождения на дереве реестра.
Определяет возможность отложенной записи изменений реестра на диск если True. И немедленная запись если False.
При создании объекта данное свойство устанавливается равным True. Отложенная запись позволяет операционной среде самой спланировать время записи изменений на диск, а пока она разместит их в оперативной памяти (так называемое кэширование). Это значит, что если производились изменения данных в ключе, то сразу после операции закрытия ключа, которая автоматически выполняется при открытии нового ключа, операционная среда вернет управление вашей программе, а запись осуществит позже, когда будет время. При этом возможна задержка в несколько секунд в зависимости от загруженности системы. При немедленной записи изменения производятся сразу же, но будьте осторожны, такой режим требует много системных ресурсов, а ваша программа продолжится только после окончания операции физической записи на диск. Понятно, что программа будет работать медленно (разница между записью в оперативную память и на диск).
Записывает измененные данные, если таковые есть, в текущий ключ и закрывает его. Способ записи определяется значением свойства LazyWrite.
Закрывайте ключ сразу как произвели с ним необходимые вам действия. Не держите долго ключ открытым. Лучше закройте его, а когда будет надо, откроете опять. Реестр, как никак, все-таки база данных, им пользуется система и другие программы.
Некоторые методы объекта TRegistry вызывают CloseKey сразу после чтения из или записи в реестр. Попытка закрыть уже закрытый ключ не опасна и никаких действий не совершает.
Создает объект TRegistry для программы и устанавливает корневой ключ.
Устанавливает RootKey в HKEY_CURRENT_USER и LazyWrite в True.
Создает новый ключ, если его еще нет, не открывая его.
Создает ключ с путем указанным в параметре Key. Если ключ уже существует, то не делает ничего. Не изменяет свойство CurrentPath. В случае удачи возвращает True, иначе возбуждает исключение ERegistryException.
Windows при создании ключа открывает его, но данный метод сам закрывает этот ключ, для того чтобы открытым остался только один ключ, который был до этого текущим (таковым он и останется).
Удаляет ключ по указанному пути, а также все подключи и параметры, входящие в него.
Возвращает True в случае успеха и False иначе.
Удаляет параметр с указанным именем (и имя и значение) для текущего ключа.
Возвращает True в случае успеха и False иначе.
Дает размер и тип значения параметра по его имени для текущего ключа.
end;
Этот тип необходим для сохранения сведений о размере и типе параметра.
ValueName имя запрашиваемого параметра. Переменная Value возвращает сведенья о параметре. При этом поле DataSize содержит размер значения параметра в байтах (для строкового значения - длина строки, включая терминальный ноль), а поле RegData определение типа. Возможны следующие имена идентификаторов:
rdUnknown | неизвестный тип |
rdString | строка |
rdExpandString | строка, описывающая переменную окружения Windows вроде "%PATH%" |
rdInteger | целое 32 бита |
rdBinary | двоичный, любой набор битов (т.е. не типизированный) |
Возвращает True в случае успеха. И False иначе.
Дает размер (длину) значения параметра с указанным именем для текущего ключа.
Для определения размера вызывается метод GetDataInfo. Если вызов прошел успешно, то возвращается значение поля DataSize. Если параметра с таким именем нет, возвращается -1.
Дает значение, определяющее тип данных для параметра с указанным именем в текущем ключе.
function GetDataType(const ValueName:string):TRegDataType;
Вызывает метод GetDataInfo, и если вызов прошел успешно, то возвращается значение поля RegData, которое может иметь следующие значения:
rdUnknown | неизвестный тип |
rdString | строка |
rdExpandString | строка, описывающая переменную окружения Windows вроде "%PATH%" |
rdInteger | целое 32 бита |
rdBinary | двоичный, любой набор битов (т.е. не типизированный) |
Если параметра с таким именем нет, возвращается rdUnknown.
Дает информацию о текущем ключе.
end;
Данный тип необходим для получения информации о ключе.
В переменной Value возвращает всю информацию о текущем ключе. Поля, в случае успешного завершения, будут иметь следующие значения:
NumSubKeys | количество дочерних ключей |
MaxSubKeyLen | максимальная длина имени дочернего ключа в байтах |
NumValues | количество параметров |
MaxValueLen | максимальная длина имени параметра в байтах |
MaxDataLen | максимальная длина значения параметра |
FileTime | время последнего обновления ключа (в Windows95 не поддерживается всегда 0) |
Возвращает список всех имен дочерних ключей принадлежащих текущему ключу.
В качестве параметра нужно использовать потомка TStrings, например TStringList, который должен быть создан заранее. Метод очищает список и заполняет его именами дочерних ключей.
Возвращает список всех имен параметров принадлежащих текущему ключу.
В качестве параметра нужно использовать потомка TStrings, например TStringList, который должен быть создан заранее. Метод очищает список и заполняет его именами параметров.
Указывает на наличие дочерних ключей у текущего ключа.
Возвращает True, если текущий ключ имеет хотя бы один дочерний ключ, иначе False. Вызывает метод GetKeyInfo и на основании возвращенной информации определяет наличие дочерних ключей.
Проверяет наличие ключа по указанному пути.
Пытается открыть и сразу же закрыть ключ. Если удается открыть, то возвращает True, ключ существует. Иначе False, ключ не существует.
Создает указанный ключ как дочерний корневого ключа и сохраняет в нем улей (часть реестра), находящийся в отдельном файле, который предварительно должен быть создан с помощью метода SaveKey.
Загрузка происходит только в вершину реестра, поэтому в качестве корня могут быть использованы лишь ключи HKEY_USERS, HKEY_LOCAL_MACHINE. При использовании других дескрипторов, ни создание дочернего ключа, ни загрузка происходить не будут, а метод вернет False. Параметр Key не путь, а имя дочернего ключа. Параметр FileName полный путь к файлу при этом если имя не содержит путь, то файл берется из корневого каталога Windows. Файл должен быть предварительно создан с помощью метода SaveKey. В Windows95 функция не поддерживает длинное имя файла, по этому надо использовать его короткое имя. Возвращает True в случае успеха и False иначе.
Загруженный ключ теряется после перезагрузки системы, но до этого не может быть удален никак иначе, как только вызовом метода UnLoadKey.
Переносит ключ, его дочерние ключи и параметры в новое место и с новым именем.
По указанному в OldName пути открывает ключ-источник, предназначенный для переноса. По указанному в NewName пути создает и открывает ключ-приемник, куда будет осуществляться перенос. Рекурсивно копирует все параметры и дочерние ключи. Если аргумент Delete равен True ,то удаляет ключ-источник (перенос), иначе оставляет (копирование). Закрывает оба ключа и все ключи, открываемые во время переноса. Если ключ приемника окажется дочерним по отношению к источнику (любого уровня вложенности), произойдет зацикливание. Если ключ-источник не существует или уже существует ключ-приемник, то метод прекращает выполнение. Возникающие ошибки игнорируются, исключение не возбуждается и ничего не сообщается. Нет никакой возможности узнать об ошибке, кроме как сравнить ключи источника и приемника. Не удобный и опасный метод.
Открывает существующий, или создает и открывает новый ключ.
Аргумент CanCreate разрешает, если True, или запрещает, если False, создание ключа, если он не существует. Делает текущим указанный ключ, предварительно закрыв предыдущий текущий ключ. Устанавливает свойствам CurrentKey и CurrentPath новые значения. Возвращает True в случае успеха и False иначе.
Для текущего ключа читает и помещает в буфер двоичное значение указанного параметра.
Помещает в переменную Buffer значение параметра с именем Name. Значение параметра должно иметь тип rdBinary, а размер буфера, передаваемый аргументом BufSize, должен быть не меньше длинны значения параметра, иначе возбуждается исключение. При удачном завершении метод возвращает размер данных (в байтах) помещенных в буфер. Если параметра с указанным именем не существует, то метод возвращает 0.
Для текущего ключа возвращает логическое представление значения указанного параметра.
Поскольку логический тип отсутствует в реестре, используется значение целого типа. При этом метод возвращает False, если значение параметра равно нулю и True, если оно отлично от нуля. Значение параметра должно иметь тип rdInteger, иначе возбуждается исключение.
Для текущего ключа возвращает денежное представление значения указанного параметра.
Поскольку денежный тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение.
Для текущего ключа возвращает дата-время представление значения указанного параметра.
Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение. Вызывает метод ReadDateTime без каких либо преобразований.
Для текущего ключа возвращает дата-время представление значения указанного параметра.
Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение.
Для текущего ключа возвращает вещественное представление значения указанного параметра.
Поскольку вещественный тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение.
Для текущего ключа возвращает целое значение указанного параметра.
Значение параметра должно иметь тип rdInteger, иначе возбуждается исключение.
Для текущего ключа возвращает строковое значение указанного параметра.
Создает строку и заполняет ее значением параметра. Значение параметра должно иметь тип rdString или rdExpandString, иначе возбуждается исключение.
Для текущего ключа возвращает дата-время представление значения указанного параметра.
Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра должно иметь тип rdBinary, а размер значения параметра должен быть равен 8 байт, иначе возбуждается исключение. Вызывает метод ReadDateTime без каких либо преобразований.
Меняет имя параметра для текущего ключа.
Копирует значение параметра, удаляет старое имя, создает параметр с новым именем и старым значением. Для успешного выполнения требуется, чтобы существовал параметр со старым и не существовал параметр с новым именем, размер значения параметра отличался от нуля. Об ошибках не сообщает.
Заменяет указанный ключ содержимым файла. Замена вступает в силу после перезагрузки системы.
Сохраняет старое имя для ключа, путь к которому указывает строка Key (путь абсолютный или относительный), заменяет все его параметры и дочерние ключи ульем (частью реестра) хранящимся в файле FileName. Файл должен быть предварительно создан с помощью метода SaveKey. Старое содержание ключа сохраняется в файле BackUpFileName. В качестве ключа, участвующего в операции замены, можно использовать только ключи первого уровня вложенности от HKEY_LOCAL_MACHINE или HKEY_USER (т.е. являющиеся непосредственными потомками этих двух ключей). Следовательно, в качестве ключа можно использовать любой корневой ключ, при этом строка Key должна быть равна nil. Или имя любого ключа (но не путь), в том числе и вашего, для ключей HKEY_LOCAL_MACHINE или HKEY_USER. Возвращает True в случае успеха и False иначе.
Обратите внимание, имя ключа сохраняется, а имена дочерних ключей, параметров и их значений заменяются. Замена вступает в силу после перезагрузки системы.
Загружает в указанный ключ содержимое файла. Только WindowsNT.
Открывает ключ Key и загружает улей (часть реестра) находящийся в файле FileName. Перед возвратом закрывает ключ. Имя ключа сохраняется, а имена дочерних ключей, параметров и их значений заменяются. Файл должен быть предварительно создан с помощью метода SaveKey. Возвращает True в случае успеха и False иначе.
Сохраняет указанный ключ в файле.
Открывает ключ и записывает сам ключ, его дочерние ключи и параметры как улей (часть реестра) в указанный файл, и перед возвратом закрывает ключ. Файл, в котором сохраняется ключ, не должен существовать. Файл созданный с помощью этого метода используется методами RestoreKey, ReplaceKey и LoadKey. Возвращает True в случае успеха и False иначе.
Удаляет указанный ключ из реестра.
При удалении ключа модификация файла реестра не происходит, т.к. удалятся должен только ключ предварительно созданный с помощью метода LoadKey. Возвращает True в случае успеха и False иначе.
Проверяет наличие параметра с указанным именем для текущего ключа.
Вызывает метод GetDataInfo для текущего ключа. Возвращает True, если параметр с таким именем существует, иначе False.
Записывает в текущий ключ двоичное значение параметра из буфера. Если параметр с указанным именем не существует, то создает его.
С помощью метода PutData переписывает данные из буфера как двоичные. Если записать не удается, то вызывается исключение (внутри метода PutData).
Записывает в текущий ключ логическое представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.
Поскольку логический тип отсутствует в реестре, используется значение целого типа. При этом метод записывает 0 для False, и отличное от нуля для True. Значение параметра будет иметь тип rdInteger. Если записать не удалось, возбуждается исключение.
Записывает в текущий ключ денежное представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.
Поскольку денежный тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение.
Записывает в текущий ключ дата-время представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.
Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение. Вызывает метод WriteDateTime без каких либо преобразований.
Записывает в текущий ключ дата-время представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.
Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение.
Записывает в текущий ключ вещественное представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.
Поскольку вещественный тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение.
Записывает в текущий ключ целое значение указанного параметра. Если параметр с указанным именем не существует, то создает его.
Значение параметра будет иметь тип rdInteger. Если записать не удалось, возбуждается исключение.
Записывает в текущий ключ строковое значение указанного параметра. Если параметр с указанным именем не существует, то создает его.
Значение параметра будет иметь тип rdString. Если записать не удалось, возбуждается исключение.
Записывает в текущий ключ дата-время представление значения указанного параметра. Если параметр с указанным именем не существует, то создает его.
Поскольку дата-время тип отсутствует в реестре, используется значение двоичного типа. Значение параметра будет иметь тип rdBinary, а размер значения параметра будет равен 8 байт. Если записать не удалось, возбуждается исключение. Вызывает метод WriteDateTime без каких либо преобразований.