Недокументированные и малоизвестные возможности Windows XP
Шрифт:
Как уже было сказано, правая панель редактора реестра хранит сведения о содержащихся в открытой на данный момент ветви реестра параметрах: их названия, тип и значение. Параметры реестра могут иметь следующие типы данных (имеется в виду, что редактор реестра может создавать эти типы параметров, на самом же деле типов параметров намного больше).
■ REG_SZ — строковый параметр, содержимым которого может быть строка символов Unicode.
■ REG_EXPAND_SZ — расширяемый строковый параметр. Его содержимым может быть как произвольный текст, так и определенные переменные, которые после обработки системой преобразуются в статические пути к каталогам Windows (например, переменная %systemroot% преобразуется
■ REG_MULTI_SZ — мультистроковый параметр, содержимым которого могут быть несколько строк текста, разграниченных NULL.
■ REG_DWORD — если все предыдущие типы параметров хранили строковые данные, то данный тип определяет числовое значение длиной не более 4 байт.
■ REG_BINARY — этот параметр хранит данные любой длины, но в основном применяется длина в 4 байта (по аналогии с REG_DWORD).
ПРИМЕЧАНИЕ
В основном нет никакой разницы между типами параметров реестра, поэтому вместо REG_DWORD-типа можно создавать параметры REG_BINARY-типа, вместо REG_SZ-типа можно создавать параметры REG_EXPAND_SZ-типа и т.д.
Битовая маска — это название, используемое для описания значения параметров типа REG_DWORD и REG_BINARY, при котором отдельно описывается результат установки каждого бита данного параметра. Например, в этой книге можно встретить абзацы, в которых будет содержаться подобный текст:
0х00000001 — описание1
0х00000002 — описание2
0x00000004 — описание3
0x00000008 — описание4
0x00000010 — описание5
0x00000020 — описание6
…
Приведенный абзац можно расшифровать так: если первый бит параметра будет установлен, то описание1, если второй бит параметра установлен, то описание2, если третий бит параметра установлен — описание3 и т.д.
При этом следует еще сказать, что в параметре может быть установлено сразу несколько битов, в этом случае выполняемое им действие определяется суммой соответствующих описаний. Битовая маска не только упрощает описание сложных параметров (по аналогии со способом их описания эти параметры будут также называться битовыми масками), но и позволяет легко установить отдельные биты параметра. Например, чтобы установить все приведенные выше биты параметра, нужно записать в него значение, равное 1 + 2 + 4 + 8 + 10 + 20 = 7 + 38 = 3F (расчет ведется в шестнадцатиричной системе счисления).
Рассмотрим наиболее интересные параметры реестра. Первым корневым разделом, структура которого будет описана, станет раздел HKEY_CLASSES_ROOT. Хотя, если быть точным, содержимое этого раздела строится на основе двух ветвей других корневых разделов: HKEY_LOCAL_MACHINE\SOFTWARE\Classes и HKEY_CURRENT_USER\Software\Classes. Первая ветвь реестра включает в себя информацию о расширениях файлов, используемую всеми пользователями компьютера для построения карты расширений. Вторая ветвь содержит информацию о расширениях, которые либо используются только текущим пользователем, либо переопределяют собой информацию из ветви корневого раздела HKEY_LOCAL_ MACHINE. Иначе говоря, если информация о каком-нибудь расширении содержится как в корневом разделе HKEY_LOCAL_MACHINE, так и в HKEY_CURRENT_USER, то сведения из этих ветвей будут объединяться. При этом сведения из ветви HKEY_CURRENT_USER будут заменять собой сведения из ветви HKEY_LOCAL_MACHINE.
Корневой раздел HKEY_CLASSES_ROOT имеет более-менее статичную структуру. Если остальные корневые разделы могут хранить любую информацию, какую только захотят поместить в них программисты (любое название параметра и любой путь, ведущий к этому параметру), то HKEY_CLASSES_ROOT содержит параметры, названия которых не зависят от прихотей
Как уже говорилось выше, корневой раздел HKEY_CLASSES_ROOT включает в себя всю информацию о расширениях файлов, которые зарегистрированы в вашей системе, а также описывает те действия, которые вы можете выполнить с файлами данного расширения (команды контекстного меню). Ветвь также содержит сведения обо всех зарегистрированных в системе ActiveX-компонентах, но о них будет рассказано чуть позже, а сейчас разберемся с хранением сведений о расширениях файлов.
Расширения файлов
Есть два способа хранения в реестре информации о расширении файлов — правильный и не очень. Второй применялся в старых версиях операционной системы Windows, хотя поддерживается и Windows XP. При его использовании все параметры и дочерние подразделы записываются в один раздел HKEY_CLASSES_ROOT. Таким образом, все то, что будет рассмотрено далее в этом разделе, при использовании неправильного способа хранения будет содержаться в одном подразделе корневого раздела HKEY_CLASSES_ROOT. Правильный же способ хранения параметров расширения файла определяет для их хранения два раздела. Первый из них назван в честь расширения файла, например, для файлов с расширением TXT он будет называться .txt. Этот раздел еще называют разделом расширения. Он практически ничего интересного не содержит, но зато в параметре (По умолчанию) находится название второго раздела. Вот этот раздел реестра как раз и включает в себя всю интересную и увлекательную информацию о расширении. Он еще называется разделом идентификатора.
Рис. 4.1. Разделы описания расширения файла
В книге будут описываться параметры и дочерние разделы, используемые в регистрации расширения с помощью правильного способа. Но сначала посмотрите на рис. 4.1. Он иллюстрирует правильный способ хранения информации для файлов с расширением TXT.
Раздел расширения
Как уже говорилось, раздел расширения включает в себя параметр (По умолчанию), значение которого определяет название раздела идентификатора, описывающего данное расширение. Но, кроме этого параметра, раздел расширения может содержать еще несколько параметров строкового типа.
■ Content Type — определяет тип расширения MIME, который ассоциирован с файлами соответствующего расширения. Те, кто занимался веб-программированием, конечно знают, что такое MIME. Именно строка MIME используется браузером для определения того, что же ему нужно делать с соответствующим расширением (то ли открыть, то ли воспроизвести, то ли еще что-нибудь).
На рис. 4.1 видно, что текстовые файлы (TXT) используют расширение text/plain, которое определяет содержимое данных файлов как неформатированный текст.
■ PerceivedType — говорит системе о том, в каком виде хранится информация с соответствующим расширением. Этот параметр может принимать такие значения: Text, Image, Audio, Video, System, Compressed.
■ Generic — если значение равно System, то файлы с соответствующим расширением являются собственностью системы и сведения о них лучше не удалять.
■ NoOpen — применяется только в том случае, когда параметр (По умолчанию) раздела расширения не имеет никакого значения. Если данный параметр присутствует, то при попытке открытия соответствующего файла перед отображением диалога Открыть с помощью будет выводиться диалог Внимание, с сообщением о том, что файлы с данным расширением используются системой и их лучше не открывать.