Чтобы Windows смогла работать с файлом, его расширение должно быть зарегистрировано — в реестре должна существовать определенная, хотя бы минимальная, структура параметров, описывающих расширение файла.
Каждый зарегистрированный в операционной системе файл хранит свои настройки в двух подразделах корневого раздела HKCR. Эти подразделы называются подразделом расширения файла и подразделом идентификатора файла. Причем название подраздела расширения файла соответствует расширению файла с точкой перед ним. Название идентификатора же определяется в параметре (по умолчанию) раздела расширения файла.
Содержимое корневого раздела HKCR строится на основе содержимого ветвей реестра HKLM\SOFTWARE\Classes и HKCU\Software\Classes. То есть, вместо того, чтобы редактировать содержимое подраздела HKCR, вы можете редактировать содержимое одной из двух ветвей реестра.
В ветви реестра HKLM\SOFTWARE\Classes регистрируются расширения файлов для всех пользователей. А с помощью ветви реестра HKCU\Software\Classes вы можете зарегистрировать или изменить настройки расширения только для себя.
В качестве примера давайте подумаем, как же должен быть зарегистрирован файл с расширением .testfile, идентификатор которого, допустим, будет равен IDtesfile. На листинге 1.04 представлен пример такой регистрации.
Листинг 1.04. Регистрация файла .testfile
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.testfile]
="IDtesfile"
[HKEY_CLASSES_ROOT\IDtesfile]
Программа assoc.exe
Для работы с идентификаторами файлов предназначена стандартная программа командной строки assoc.exe. Она поддерживает следующие возможности.
Assoc.exe. Отображает названия всех зарегистрированных в Windows расширений и присвоенных им идентификаторов.
Assoc.exe «.расширение»=«идентификатор». Изменяет идентификатор для указанного расширения.
Подраздел расширения файла
Кроме параметра (по умолчанию) в подразделе расширения файла могут находиться другие параметры, как правило, строкового типа.
Отображение и скрытие расширения файла
Наиболее интересными из них являются два параметра AlwaysShowExt и NeverShowExt (в подразделе расширения файла может находиться только один из этих двух параметров), которые определяют, будет ли отображаться расширение для данного типа файла. Например, по умолчанию расширение файла не отображается в файлах следующих расширений: .url (ярлык на веб-страницу), .lnk (обычный ярлык), .pif (ярлык MS-DOS), .search-ms (сохраненный запрос поиска), .scf (объект, содержащий другой объект).
Значок ярлыка
Также в подразделе расширения файла может находиться параметр IsShortCut. Его присутствие говорит о том, что файлы соответствующего расширения являются ярлыками, и в нижней части их значка должна отображаться стрелочка.
Подсказки и метаданные файла
Кроме того, также следует обратить внимание на набор параметров, отвечающих за отображение различного рода подсказок к файлу. Эти параметры перечислены в таблице ниже.
Таблица 1.41. Ветвь HKCR\«расширение файла»
ConflictPrompt. Информация о конфликтующих файлах, отображаемая при обнаружении совпадения файлов при копировании или вставке в папку.
InfoTip. Информация, отображаемая при наведении мышки на файл.
PreviewDetails. Информация, отображаемая в правой части поля подробностей проводника.
PreviewTitle. Информация, отображаемая в левой части поля подробностей проводника.
FullDetails. Информация, отображаемая на вкладке Подробно диалога Свойства.
Формат значения описанных в таблице параметров следующий: prop:«метаданные1»[; «метаданные2»;«метаданныеN»]. Например, prop:System.ItemNameDisplay;System.ItemType.
После слова prop: в значении данных параметров идет перечень отображаемых метаданных. Эти метаданные, а также поля описания файла, которые они отображают, представлены в таблице 1.42.
Таблица 1.42. Метаданные операционной системы Windows
System.FileDescription Описание файла
System.ItemFolderPathDisplay Путь к папке
System.ComputerName Компьютер
System.Audio.EncodingBitrate Скорость потока
System.Document.PageCount Число страниц
System.DateModified Дата изменения
*System.Music.TrackNumber №
System.DateAccessed Дата доступа
System.DRM.IsProtected С защитой
*System.Link.Description Описание
System.Link.DateVisited Дата посещения
System.Image.BitDepth Глубина цвета
*System.Music.Artist Исполнители
*System.Music.AlbumTitle Альбом
*System.Music.Genre Жанр
System.Size Размер
*System.Rating Оценка
System.FreeSpace Свободно
System.Keywords Ключевые слова
System.Language Язык
System.PercentFull Использовано
System.SharedWith Общий доступ для
System.FileVersion Версия файла
System.FileOwner Владелец
System.ItemType Тип
System.Author Авторы
System.Capacity Общий размер
System.Comment Комментарии
System.Copyright Авторские права
System.DateCreated Дата создания
System.ItemNameDisplay Имя
System.FileAttributes Атрибуты
System.Image.HorizontalSize Ширина
System.Image.VerticalSize Высота
System.FileCount Количество файлов
System.TotalFileSize Общий размер файлов
System.OfflineStatus Автономное состояние
System.OfflineAvailability Автономный доступ
*содержимое данного поля доступно для изменения пользователем.
Подраздел ShellNew
Кроме параметров в подразделе расширения файла может находиться дочерний подраздел ShellNew. Его присутствие говорит о том, что файлы с соответствующим расширением можно будет создать с помощью пункта списка СОЗДАТЬ (рис. 1.13) контекстного меню рабочего стола и проводника. То есть, вы можете удалить пункты выпадающего списка СОЗДАТЬ, просто удалив подраздел ShellNew из ветви реестра вида HKCR\«расширение файла».
Рис. 1.13. Список Создать
В таблице ниже представлены расширения и названия соответствующих им элементов, которые по умолчанию отображаются в списке СОЗДАТЬ.
Таблица 1.43. Расширения, отображаемые в списке Создать
*Для удаления нужно воспользоваться ветвью реестра HKCR\.zip\CompressedFolder.
**Для удаления нужно воспользоваться ветвью реестра HKCR\.jnt\jntfile
Ниже приведен REG-файл (расположение на прилагающемся к книге компакт-диске — Файлы реестра\Интерфейс\DelSpCreate.reg), который удаляет такие пункты списка СОЗДАТЬ, как ПОРТФЕЛЬ, ТОЧЕЧНЫЙ РИСУНОК и ДОКУМЕНТ ЖУРНАЛА.
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\Briefcase\ShellNew]
[-HKEY_CLASSES_ROOT\.bmp\ShellNew]
[-HKEY_CLASSES_ROOT\.jnt\jntfile\ShellNew]
Создание пункта списка Создать Если же вы хотите создать пункт выпадающего списка СОЗДАТЬ, тогда вам придется не просто создать подраздел ShellNew в соответствующем расширению файла подразделе, но и дополнительно создать в подразделе ShellNew один из представленных в таблице 1.44 параметров. Эти параметры определяют действие, выполняемое при выборе соответствующего пункта списка СОЗДАТЬ, и имеют строковый тип. Также в подразделе ShellNew могут находиться параметры строкового типа, представленные
в таблице 1.45. А в таблице 1.46 представлены параметры строкового типа, которые находятся в подразделе Config, расположенном в подразделе ShellNew.
Таблица 1.44. Ветвь HKCR\«расширение»\ShellNew
Command. Содержит команду, выполняемую при выборе элемента списка.
Используется в элементах Контакт ("%programFiles%\Windows Mail\Wab.exe" /CreateContact "%1") и Документ Журнала ("%ProgramFiles%\Windows Journal\Journal.exe" /n 0).
FileName. Определяет файл, используемый в качестве шаблона при создании нового файла.
NullFile. Создать пустой файл с соответствующим элементу списка расширением.
Таблица 1.45. Ветвь HKCR\«расширение»\ShellNew
IconPath. Хранит путь к значку, отображаемому в списке вместо стандартного значка.
MenuText. Хранит название библиотеки и идентификатор ресурса, заменяющего стандартное название соответствующего пункта меню Создать.
NoExtension. Присутствие параметра удаляет расширение создаваемого файла.
DontRename. Присутствие параметра запрещает автоматическое выделение имени файла.
В качестве примера давайте попробуем изменить способ создания текстовых файлов. По умолчанию они создаются на основе пустого файла (параметр NullFile), однако давайте назначим их создание на основе шаблона. Например, можно создать шаблон текстового файла, содержащего в себе строку .LOG, чтобы создаваемые на его основе текстовые файлы при своем открытии добавляли в свое содержимое текущую дату и время.
Ниже приведен REG-файл (расположение на прилагающемся к книге компакт-диске — Файлы реестра\Интерфейс\EditTXTCreate.reg), который определяет создание текстовых документов на основе шаблона schablon.txt, расположенного в каталоге %systemroot%\system32. Естественно, что файл schablon.txt в соответствующем каталоге вы должны создать сами.