Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС СФМЭИ.doc
Скачиваний:
22
Добавлен:
17.09.2019
Размер:
1.37 Mб
Скачать

1.2.2. Получение информации из реестра

Реестр играет ключевую роль в конфигурировании и управлении Windows. Это хранилище общесистемных и пользовательских параметров.

Реестр – это база данных, структура которой аналогична структуре логического диска. Он содержит разделы (keys), напоминающие дисковые каталоги и параметры (values), которые можно сравнить с файлами на диске. В параметрах хранятся данные. В лабораторной работе рассматривается объект TRegistry, содержащий методы для работы с реестром.

Для работы с реестром необходимо подключить модуль Registry следующим образом:

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls,Registry;

Ниже рассматривается пример работы с реестром с помощью объекта TRegistry:

function GetRegistryValue(KeyName: string): string;

var

Registry: TRegistry;

Begin

// Создание объекта TRegistry, с помощью которого выполняется чтение из реестра

Registry := TRegistry.Create(KEY_READ);

Try

// Указывается требуемый раздел реестра

Registry.RootKey = HKEY_LOCAL_MACHINE;

// Открывается указанный раздел реестра

Registry.OpenKey(KeyName, False);

// Считывается содержимое открытого раздела

Result := Registry.ReadString('VALUE1');

Finally

// Объект TRegistry освобождается

Registry.Free;

end;

end;

1.2.3. Получение информации о системных каталогах Windows

Для получения информации о системных каталогах Windows используются две функции:

  • GetSystemDirectory – Получение имени системного каталога в котором содержатся системные библиотеки, драйверы и файлы шрифтов;

  • GetWindowsDirectory – Получение имени системного каталога, в котором содержатся файлы инициализации, файлы помощи и стандартные приложения Windows).

Данные функции имеют аналогичную структуру входных и выходных параметров. Рассмотрим работу данных функций на примере функции GetSystemDirectory:

function GetSystemDirectory(lpBuffer: PChar; uSize: DWORD): DWORD;

где

  • lpBuffer – указатель на выходной буфер, в который записывается информация о каталоге. Информация записывается в виде строки, заканчивающейся двоичным нулем.

  • uSize – переменная содержит размер буфера.

При успешном завершении функция GetSystemDirectory возвращает длину полученной строки в выходном буфере. В случае ошибки функция GetSystemDirectory возвращает 0.

1.2.4. Получение информации о диске

Для получения информации о диске используется функция GetVolumeInformation:

function GetVolumeInformation( lpRootPathName: PChar; lpVolumeNameBuffer: PChar;

nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD;

var lpMaximumComponentLength, lpFileSystemFlags: DWORD;

lpFileSystemNameBuffer: PChar; nFileSystemNameSize: DWORD): Boolean; stdcall;

Назначение параметров данной функции приведено в таблице 1.3.

Таблица 1.3 Параметры функции GetVolumeInformation

Параметр

Описание

lpRootPathName

имя диска, информацию о котором надо получить

lpVolumeNameBuffer

буфер, в который будет помещено имя тома диска

nVolumeNameSize

размер буфера для имени тома

lpVolumeSerialNumber

переменная, в которую будет записан серийный номер

lpMaximumComponentLength

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

lpFileSystemFlags

флаги файловой системы. Возможные значения флагов приведены в таблице 1.4.

lpFileSystemNameBuffer

буфер, в который будет помещено имя файловой системы

nFileSystemNameSize

размер буфера для имени файловой системы.

Если функция GetVolumeInformation успешно выполнена, она возвращает ненулевое значение (true). Если произошла ошибка – возвращается 0 (false). Тогда информацию об ошибке можно получить, вызвав функцию GetLastError

Таблица 1.4 Возможные значения флагов в параметре lpFileSystemFlags функции GetVolumeInformation

Флаг

Описание

fs_case_is_preserved

указывает на то, что файловая система сохраняет регистр имен файлов, когда сохраняет имя на диске

fs__case_sensitive

файловая система чувствительна к регистру имен файлов

fs_unicode_stored_on_disk

файловая система поддерживает имена в UNICODE

fs_persistent_acls

файловая система поддерживает списки досту­па (например, NTFS)

fs_file_compression

файловая система поддерживает компрессию на уровне файлов

fs_vol_is_compressed

файловая система поддерживает компрес­сию на уровне тома (например, DoubleSpace тома диска)