Осторожность при работе с реестром 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. Поскольку таких имен большинство, то это существенно уменьшает размер файлов реестра.
28.HKCU. Перечень подключей.
В данном разделе реестра хранятся настройки текущего пользователя. По сути, этот раздел, как уже отмечалось, является ссылкой на раздел HKU\<SID> (SID — это не название ключа, а идентификатор пользователя).
Настройки рабочего стола, параметры приложений пользователя, переменные окружения, сетевые соединения, установленные принтеры — вот краткий перечень настроек, хранящихся в этом разделе.
Некоторые подключи ключа HKCU представлены в табл. 1.
Таблица 1. Некоторые подключи ключа HKCU
Подраздел | Описание |
AppEvents | Сопоставляет звуки системным событиям. Параметры этого раздепа обычно изменяются с помощью апплета Звуки Панели управления. Однако их можно изменять и вручную (с помощью редактора реестра) |
Console | Содержит настройки консольной подсистемы (она используется для запуска приложений, не имеющих графического интерфейса, и для запуска старых DOS-приложений) |
Control Panel | Содержит огромное количество настроек, которые можно изменить с помощью панели управления: параметры рабочего стола, региональные настройки, параметры клавиатуры и т. д. Однако в этом же разделе можно найти и такие параметры, которые нельзя изменить с помощь панели управления. Для их изменения нужно использовать только редактор реестра |
Environment | Содержит переменные окружения |
Identities | В этом ключе хранятся параметры учетных записей Outlook Express, что позволяет разным пользователям использовать один и тот же почтовый клиент |
Keyboard Layout | Содержит информацию о раскладках клавиатуры |
Network | Используется для хранения информации о сетевых дисках. Каждый подраздел содержит настройки сетевого диска, который автоматически подключается при запуске системы. Имена подразделов совпадают с именами сетевых дисков |
Printers | Используется для хранения пользовательских настроек принтеров |
Software | Содержит пользовательские параметры приложений. Большая часть пользовательских настроек Windows хранится в этом разделе, вернее, в его подразделе HKCU\Software\Microsoft\Windows\CurrentVersion |
В табл. 1 приведены далеко не все ключи, которые можно увидеть в разделе HKCU, но остальные нам не интересны: в них нет ничего такого, что бы заслуживало нашего внимания.
29. HKCR. Типы данных. Перечень подключей.
HKEY_CLASSES_ROOT\{интересующий вас индентификатор}\Shell
Перечисляются действия, которые можно выполнить над файлами данного типа. Все действия перечислены в контекстном меню документа (доступ к нему осуществляется щелчком правой кнопки мыши). Название действия "по умолчанию" - выпоняется в ответ на двойной шелчок мышью на документе или выводится полужирным шрифтом в контекстном меню. Что это за действие зависит от структуры переходов в подключи. В первую учередь переход от этого ключа происходит в подключ HKEY_CLASSES_ROOT\{интересующий вас индентификатор}\Shell\Open, если его нет, то вHKEY_CLASSES_ROOT\{интересующий вас индентификатор}\Shell\Printесли же и его нет, то в первый подключ данного ключа.
Все остальные подключи это дополнительные пункты меню которые не выполняются по умолчанию и по структуре анологичны HKEY_CLASSES_ROOT\{интересующий вас индентификатор}\Shell\Open.
Типы данных, которые содержатся в этом разделе:
REG_SZ — строковый параметр, содержимым которого может быть строка символов Unicode.
REG_EXPAND_SZ — расширяемый строковый параметр. Его содержимым может быть как произвольный текст, так и определенные переменные, которые после обработки системой преобразуются в статические пути к каталогам Windows (например, переменная %systemroot% преобразуется в каталог, в котором установлена текущая версия Windows, а переменная %username% преобразуется в имя текущего пользователя, работающего в системе).
REG_MULTI_SZ — мультистроковый параметр, содержимым которого могут быть несколько строк текста, разграниченных NULL.
REG_DWORD — если все предыдущие типы параметров хранили строковые данные, то данный тип определяет числовое значение длиной не более 4 байт.
REG_BINARY — этот параметр хранит данные любой длины, но в основном применяется длина в 4 байта (по аналогии с REG_DWORD).