Разные иконки для разных типов файлов

1267211261_image_iconsКакбы тривиальным не казался этот вопрос но на Win 7 получить этого эффекта не так уж и просто. Пришлось покопаться. Итак в чем проблема?

Иконки разных типов файлов регистрируются в реестре. Есть несколько мест где определяюся расширение файлов их тип и соответсвуюшие данные для работы с ними. В том числе и иконка. Определяя в одном месте эти характеристики можно пропустить их в другом и эффект не будет достигнут.

Разнообразные программы которые предназначены для изменения иконок, в том числе и по типу файлов, работают с основным своиством. И если несколько файлов работают с той же программой то онм меняют иконку не только нужному вам типу но и всем что открываются в программе. Для того чтобы этого избежать и поправить вид файлов для всех ситуации нужно для начала удалить запись [DefaultIcon] из реестра в описании программы.

В дальнейшем примеры будут ссылаться на работу с редактором Notepadd++. Итак, для того чтобы файлы не брали по умолчанию иконку указаную в настройках реестра касающихся Notepad++ нужно удалить параметр :

HKEY_CLASSES_ROOT\Applications\notepad++.exe\DefaultIcon

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

[HKEY_CLASSES_ROOT\.css]
@=”css_auto_file”
[HKEY_CLASSES_ROOT\css_auto_file]
@=”Css – Мой новый тип файла”
[HKEY_CLASSES_ROOT\css_auto_file\shell]
@=”open”
[HKEY_CLASSES_ROOT\css_auto_file\shell\open\command]
@=”\”C:\\Program Files (x86)\\Notepad++\\notepad++.exe\” \”%1\””
[HKEY_CLASSES_ROOT\css_auto_file\DefaultIcon]
@=”E:\\icons\\css.ico”

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.css]
@=”css_auto_file”
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\css_auto_file]
@=”Css – Мой новый тип файла”
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\css_auto_file\shell]
@=”open”
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\css_auto_file\shell\open\command]
@=”\”C:\\Program Files (x86)\\Notepad++\\notepad++.exe\” \”%1\””
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\css_auto_file\DefaultIcon]
@=”E:\\icons\\css.ico”

[HKEY_CURRENT_USER\SOFTWARE\Classes\.css]
@=”css_auto_file”
[HKEY_CURRENT_USER\SOFTWARE\Classes\css_auto_file]
@=”Css – Мой новый тип файла”
[HKEY_CURRENT_USER\SOFTWARE\Classes\css_auto_file\shell]
@=”open”
[HKEY_CURRENT_USER\SOFTWARE\Classes\css_auto_file\shell\open\command]
@=”\”C:\\Program Files (x86)\\Notepad++\\notepad++.exe\” \”%1\””
[HKEY_CURRENT_USER\SOFTWARE\Classes\css_auto_file\DefaultIcon]
@=”E:\\icons\\css.ico”

Создаются три похожих набора записей в разделах HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER  которые должны обеспечить чтобы указанная иконка была присвоена нужному типу файла (в текущем примере css) при любых обстоятельствах. Нужные нам настройки можно записать в файл с расширением
.reg чтобы не возится с regedit, который на редкость неудобный. Главное чтобы первой строкой этого файла была надпись:

Windows Registry Editor Version 5.00

иначе будут сбои. Эта надпись актуальна для систем Windows 7. Для других уточняйте самостоятельно.

Разберем один набор более детально:

Первый блок создает привязку между расширением и названием типа файла. Названия типа “css_auto_file” создаются автоматически такчто лучше использовать их чтобы при необходимости переписать существующие параметры.

Второй блок создает раздел в котором будут описываться свойства типа файла.  Запись “shell” дочерняя “open” и “command” позволяют указать программу в которой будет запускаться выбранный тип файла.

Ну и последний интересующий нас создает запись DefaultIcon для нашего типа в которой мы указываем путь к файлу иконки. Если Файл содержить несколько иконок то нужную нам нужно указать после запятой. Например запись @=”E:\\icons\\package.ico,2″ говорит о том что будет выбрана вторая иконка из набора package.ico.

Основные изменения мы произвели однако есть еще один подводный камень. В настройках Explorer также может быть указано какой программой запускать и какую иконку присваивать файлу. Эти записи делаются автоматом при использовании пункта меню “Открыть с помощью”. Это самый простой способ изменить программу через которую открывается файл. Так как мы уже настроили Прогрмму для запуска и иконку нам нужно проверить нет ли записей в разделе

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts

Если они есть то они будут переписывать наши настройки и они не будут работать на практике. Записи для интересующих нас расщирений нужно просто удалить. В нашем примере с файлами типа CSS нужно искать раздел
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.css

Для того чтобы увидеть результаты иногда необходимо встряхнуть Windows, заставив его перечитать свойства для расширении из реестра и перерисовать все файлы на нашем экране. Для этого можете воспользоваться любой из программ для редактирования иконок для файлов, например FileTypesMan или Default Programs Editor. Открываете нужный вам тип файла, выбираете ту же иконку что указали при создании реестра и жмете ok. Програма заставит перегрузится файлики и вы увидете результат.