Регистрация расширений
файлов с помощью реестра Windows
На
написание этой статьи меня подвигло одно небольшое происшествие: одна из женщин
на работе обратилась ко мне с вопросом - у нее значок Вордовского файла
отображался не как для этих файлов, а как для незарегистрированного типа.
Попробовал зарегистрировать его, используя пункт контекстного меню
"Открыть с помощью", но файл открылся, а значок не изменился. Был
конец рабочего дня, поэтому я протормозил пару минут, пока не догадался
посмотреть расширение файла. Его не было :) - это и не позволяло ассоциировать
файл с приложением. Вот я и решил написать статью о регистрации расширений
файлов. Что это дает? Вы можете двойным кликом открыть файл с помощью
ассоциированного приложения, добавить на него дополнительные команды (например,
печать, быстрый просмотр и т.п.). Для этого вовсе не обязательно лезть в реестр
- можно все сделать с помощью того же меню "Открыть с помощью..." или
проводника, но это не всегда удобно. Так, если вам надо сделать одну и ту же операцию,
скажем, на десятке компьютеров, то гораздо проще написать reg-файл и установить
его на всех машинах. Или вы распространяете программу, использующую ваш формат
файлов, и чтобы ассоциировать файлы с программой на машинах пользователей
автоматически надо использовать либо тот же reg-файл, либо править реестр из
программы. Вот для этих случаев и нужна эта статья.
Файлы
регистрируются в разделе HKEY_CLASSES_ROOT. Для примера зарегистрируем файл с
расширением .diz - многие программы поставляются с файлом описания, имеющим
такое расширение. Неплохо было бы при запуске его просматривать содержимое в
текстовом редакторе, например, Блокноте. Создайте раздел с именем .diz, в
параметр которого "По умолчанию" добавьте запись "DIZ-File"
(без кавычек).
В
разделе HKEY_CLASSES_ROOT создайте еще один раздел с именем, которое было в
параметре "По умолчанию", т.е. DIZ-File. Задайте значение
"По умолчанию" равное "Описание программы" и в этом же
разделе создайте подразделы shell и DefaultIcon.
В
подразделе shell создайте еще один подраздел Open, а в нем раздел command.
Значение command "По умолчанию" должно быть
"C:\\windows\\notepad.exe \"%1\"". В разделе DefaultIcon
параметр "По умолчанию" задайте равным
"C:\\windows\\notepad.exe,1". Получилось все несколько сумбурно и запутанно,
но приведенный ниже reg-файл должен устранить все неясности (структура
reg-файлов описана в статье http://www.winhowto.ru/reg_t5.shtml):
REGEDIT4
[HKEY_CLASSES_ROOT\.diz]
@="DIZ-File"
[HKEY_CLASSES_ROOT\DIZ-File]
@="Описание программы"
[HKEY_CLASSES_ROOT\DIZ-File\shell]
[HKEY_CLASSES_ROOT\DIZ-File\shell\Open]
[HKEY_CLASSES_ROOT\DIZ-File\shell\Open\command]
@="C:\\windows\\notepad.exe \"%1\""
[HKEY_CLASSES_ROOT\DIZ-File\DefaultIcon]
@="C:\\windows\\notepad.exe,1"
Теперь все стало
несколько понятнее. Надеюсь, вы обратили внимание на то, что в пути файла
вместо одного символа \ используется \\ и кавычка задается как \".
При открытии файла используется параметр %1 после полного имени файла
Блокнота (кстати, путь к нему у вас может быть другим). Этот параметр передает
выбранный файл в Блокнот. Если путь к файлу приложения содержит пробелы, то он
должен быть заключен в кавычки.
Теперь добавим пункт на
распечатывание этого файла. Покажу все на примере нашего reg-файла. Добавьте
следующие строки в конец файла:
[HKEY_CLASSES_ROOT\DIZ-File\shell\print]
[HKEY_CLASSES_ROOT\DIZ-File\shell\print\command]
@="C:\\windows\\notepad.exe /p \"%1\""
Думаю, аналогия
понятна. Теперь вы и сами можете добавить любой пункт меню к любому
зарегистрированному типу файлов. Так, можно было бы добавить просмотр файлов
diz в WordPad'e, Word'e или еще где-то. Возможности по редактированию
контекстного меню файлов весьма обширные и я надеюсь, что мне удалось довольно
понятно объяснить технологию добавления новых пунктов.