Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КИТ 20-29.docx
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
66.77 Кб
Скачать

25. Структура реестра. Ключи. Состав ключа

Структура реестра - см. предыдущий билет.

Ключи. Состав ключа.

Значения ключей реестра Windows.

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

• REG_DWORD — целое число, обычно служит как переключатель, где 0 — выключено, а 1, соответственно, включено. • REG_SZ — текстовая строка. • REG_BINARY — двоичные данные (такой тип данных используется для хранения сведений об аппаратных устройствах).

Осторожность при работе с реестром Windows.

Реестр Windows устроен таким образом, что при удалении, внесении или изменении какой-либо информации компьютер моментально выполняет данную операцию, без запроса подтверждения. Поэтому следите за каждым своим действием, чтобы в случае экстренной ситуации вы смогли вспомнить, что делали и что изменяли. Для ощущения полной безопасности рекомендуется перед началом работы сделать резервную копию реестра.

26.Типы данных. Реестр.

В реестре могут храниться данные семи типов:

REG_BINARY хранит произвольные двоичные данные в «сыром» виде, без переформатирования и синтаксического разбора. Эти данные можно просматривать в двоичном или шестнадцатеричном виде при помощи редактора реестра.

REG_DWORD хранит параметры, представленные восьмибайтными (длинные) целыми числами. Этот тип данных обычно применяется, когда параметр обозначает счетчик или интервал. Еще одно его применение в качестве флага (0 - флаг снят, 1 - установлен).

REG_SZ представляет собой обычную строку в кодировке Unicode любой длины. Наиболее часто в этом типе данных хранится информация, которая будет читаться пользователем, пути доступа, названия устройств и т.п.

REG_EXPAND_SZ - вид REG_SZ, используемый приложениями для хранения конструкций вида %SystemRoot%\System32, например. При чтении этой строки Windows заменяет %SystemRoot% на имя папки, куда она установлена.

REG_MULTI_SZ представляет собой набор произвольного количества параметров типа REG_SZ. В этом типе данных хранится, например, список IP адресов, назначенных сетевому интерфейсу.

REG_FULL_RESOURCE_DESCRIPTOR применяется для кодирования информации о системных ресурсах, необходимых для какого-либо из устройств.

REG_NONE служит как семафор, т.е. параметр существует, но не содержит ни какого значения. Некоторые приложения проверяют наличие этого параметра и, исходя из результата проверки, выполняют или не выполняют действие.

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

27. Организация реестра. Связи между корневыми ключами и ссылки на их ключи.

Реестр Windows представляет собой древовидную структуру, с несколькими корневыми элементами, называемыми ульями (hives). Данные реестра хранятся в файлах, которые называются файлами ульев (hive files), но при этом их состав и количество не соответствуют ульям реестра.

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

Корневой структурой данных является стуктура с сигнатурой “kn” (key node) – описатель ключа. Описатель ключа содержит ссылку на описатель родительского ключа, время последнего обновления ключа, имя ключа, количество значений и дочерних ключей, флаги, а также ссылки на списки значений и дочерних ключей, ссылку на имя класса для данного ключа и ссылку на дескриптор безопасности. Физически структура оканчивается именем, которое имеет переменную длину, поэтому и вся структура имеет переменную длину.

Дескрипторы безопасности хранятся в структурах с сигнатурой “ks” (key security). Такие структуры разделяются между несколькими ключами, с помощью счетчика ссылок. Кроме того, все дескрипторы безопасности в пределах одного файла объединяются в циклический двусвязный список.

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

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

Имеются три типа списков подключей. Список с сигнатурой “lf” – используется в Windows 2000 и в качестве значений хеша использует первые 4 байта имени. В последующих версиях ему на смену пришел список с сигнатурой “lh” – имеющий аналогичную структуру, но другую, более мощную хеш-фукнцию. И, наконец, редко встречающийся “ri”-список – список списков – содержит ссылки на другие списки.

Значения хранятся в структурах с сигнатурой “kv” (key value). Аналогично kn-структуре, kv-структура оканчивается именем переменной длины, а потому и длина всей структуры переменна. Кроме того, эта структура хранит в себе тип данных, размер данных, и ссылку на блок данных. При этом если размер данных не превышает 4 байтов, то сами данные записываются в поле ссылки на блок данных внутри kv-структуры, без выделения дополнительного блока.

Рис. 3 – Связь между структурами данных в файле улья

Имена ключей и значений являются строками в кодировке Unicode, но при этом, если все символы имени принадлежат ASCII-подмножеству, то имя хранится в кодировке ASCII. Поскольку таких имен большинство, то это существенно уменьшает размер файлов реестра.