Правильная ссылка на эту страницу
http://az-design.ru/Support/SoftWare/Delphi/D3/SB06.shtml

Глава 6. TRegistry и TRegIniFile

  • Различия между Registry

       Windows Registry отслеживает информацию, связанную с операционной системой и различными установленными приложениями. Registry представляет собой иерархическую базу данных, содержащую конфигурационную информацию в специальном формате. Информацию можно редактировать непосредственно, используя программу RegEdit, показанную на рисунке 6-1, или можно модифицировать при помощи прикладных программ. Функцию Registry В прежних версиях Windows функциональность Registry обеспечивалось INI-файлами, поэтому между INI-файлами и Registry имеется определенное сходство, которое помогает понять принципы работы Registry. Однако благодаря своей организационной структуре Registry оказывается более разумной, чем традиционные INI-файлы.
       Registry разделена на несколько основных разделов, таких как HKEY_CLASSES_ROOT и HKEY_CURRENT_USER. Данные разделы или ключи содержат разные категории системной информации. Например, когда создается прикладная программа, можно зарегистрировать ее конфигурационные значения в подразделе SOFTWARE раздела HKEY_LOCAL_MACHINE. Если посмотреть на данный раздел через RegEdit, будет видна структура, используемая компаниями при запоминании данных. Microsoft, Borland и другие компании создают ключ компании и затем внутри него — ключ приложения. Данное приложение сохраняет конфигурационные значения. Значения, запоминаемые в ключе, могут принимать любой из множества полезных типов данных, включая строковый, монетарный, даты, плавающий и двоичный.
       Помощь в понимании Registry может оказать сравнение Registry Keys со знакомыми заголовками в квадратных скобках в INI-файле.


Рис.6-1. RegEdit

Различия между Registry

       Registry Windows 95 и Registry Windows NT структурированы несколько по-разному. Прежде чем получить доступ к Registry, следует определить, в какой системе происходит работа. Это можно сделать при помощи функции Win32 API GetVersionEx, что демонстрируется в листинге 6-1.

Листинг 6-1 Прежде чем получать доступ к Registry определите тип операционной системы.

var
   Form1: TForm1;
   MyVersionlnfо: TOSVersionlnfо;
implementation 
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
   MyReg: TRegistry;
   IsNT: Boolean;
begin
   MyReg := TRegistry.Create;
   MyReg.RootKey := HKEY_LOCAL_MACHINE;
   IsNT := False;
// Прежде всего следует установить размер элемента dwOSVersionInfoSize в записи OSVersionInfо в
// размер данного типа
   MyVersionInfо.dwOSVersionInfoSize := sizeof(TOSVERSIONINFO);
// Вызвать GetVersionEx для заполнения записи MyVersionInfo GetVersionEx(MyVersionInfо);
// Определение ОС
   if MyVersionInfо.dwPlatformld = VER_PLATFORM_WIN32_WINDOWS
      then lblOSName.Caption := 'Windows 95';
   if MyVersionInfo.dwPlatformld = VER_PLATFORM_WIN32_NT then
      begin;
         IsNT := True;
         lblOSName.Caption := 'Windows NT';
      end;
//  . . .

       После определения типа операционной системы (в данном случае Windows 95 или Windows NT), можно получать соответствующий доступ к Registry. Как показано в листинге 6-2, некоторые из путей Registry и ключей в Windows 95 и Windows NT различны.

Листинг 6-2 Правильный доступ к Registry Key на основе полученной ранее информации об операционной системе.

try
   if IsNT then
      if not MyReg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion',FALSE)
         then else lblVersionNumber. Caption : = MyReg. ReadString (' CurrentVersion')
         else
      if not MyReg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion',FALSE)
         then else lblVersionNumber.Caption := MyReg.ReadString('VersionNumber');
finally 
end; 
// try..finally

       В таблице 6-1 представлены методы и свойства TRegistry.

Таблица 6-1 Методы и свойства, реализуемые TRegistry

Использовать или установить это ... Чтобы сделать это ... Наследование
CloseKey Закрыть текущий ключ. Нет
Create Сконструировать новый объект. TObject
CreateKey Создать в Registry новый ключ. Нет
CurrentKey Определить имя текущего ключа. Нет
CurrentPath Определить полностью квалифицированный иерархический путь текущего ключа. Нет
DeleteKey Удалить указанный ключ. Нет
DeleteValue Удалить указанное значение в текущем ключе. Нет
Destroy Разрушить объект. TObject
Free Безопасно разрушить объект. TObject
GetDataInfo Определить информацию о значении данных ключа в Registry. Нет
GetDataSize Определить длину указанного значения данных в текущем ключе. Нет
GetDataType Определить тип данных, содержащихся в указанном значении данных в текущем ключе. Нет
GetKeyInfo Определить информацию о текущем ключе. Нет
GetKeyNames Получить имена всех подключей, содержащихся в текущем ключе Нет
GetValueNames Получить имена всех значений данных, содержащихся в текущем ключе. Нет
HasSubKeys Определить, имеет ли текущий ключ какие-либо подключи. Нет
InheritsFrom Определить, происходит ли объект от определенного класса. TObject
InstanceSize Определить объем памяти, распределенный для объекта. TObject
KeyExists Определить, имеется ли в Registry указанный ключ. Нет
LazyWrite Определить, когда Registry обновлялась. Нет
OpenKey Указать текущий ключ. Нет
ReadBinaryData Возвратить двоичное значение из значения, соответствующего текущему ключу. Нет
ReadBool Возвратить логическое значение из значения, соответствующего текущему ключу. Нет
ReadCurrency Возвратить монетарное значение из значения, соответствующего текущему ключу. Нет
ReadDate Возвратить значение даты из значения, соответствующего текущему ключу. Нет
ReadDateTime Возвратить значение даты/времени из значения, соответствующего текущему ключу. Нет
ReadFloat Возвратить значение с плавающей точкой из значения, соответствующего текущему ключу. Нет
ReadInteger Возвратить целое значение из значения, соответствующего текущему ключу. Нет
ReadString Возвратить строковое значение из значения, соответствующего текущему ключу. Нет
ReadTime Возвратить значение времени из значения, соответствующего текущему ключу. Нет
RenameValue Переименовать значение данных. Нет
RootKey Указать корневой ключ для объекта Registry. Нет
ValueExists Определить, существует ли указанное значение данных. Нет
WriteBinaryData Записать новое двоичное значение в значение, соответствующее текущему ключу. Нет
WriteBool Записать новое логическое значение в значение, соответствующее текущему ключу. Нет
WriteCurrency Записать новое монетарное значение в значение, соответствующее текущему ключу. Нет
WriteDate Записать новое значение даты в значение, соответствующее текущему ключу. Нет
WriteDateTime Записать новое значение даты/времени в значение, соответствующее текущему ключу. Нет
WriteFloat Записать новое значение с плавающей точкой в значение, соответствующее текущему ключу. Нет
WriteInteger Записать новое целое значение в значение, соответствующее текущему ключу. Нет
WriteString Записать новое строковое значение в значение, соответствующее текущему ключу. Нет
WriteTime Записать новое значение времени в значение, соответствующее текущему ключу. Нет

Метод CloseKey
Метод CreateKey
Свойство CurrentKey
Свойство CurrentPath
Метод DeleteKey
Метод DeleteValue
Метод GetDataInfo
Метод GetDataSize
Метод GetDataType
Метод GetKeyInfo
Метод GetKeyNames
Метод GetValueNames
Метод HasSubKeys
Метод KeyExists
Свойство LazyWrite
Метод OpenKey
Методы ReadRegistry
Метод RenameValue
Свойство RootKey
Метод ValueExists
Методы WriteRegistry

уже скачали 134 раз.


<<< Пред. Оглавление
Начало раздела
След. >>>




Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/SoftWare/Delphi/D3/SB06.shtml