Для каждого типа файла по умолчанию существует значок, который отображается для всех файлов данного типа. Однако Windows 7 не предлагает другого способа указать собственный значок, кроме как через редактирование реестра вручную. А ведь такая возможность присутствовала раньше во всех версиях Windows до Vista.
Значение (По умолчанию) в разделе Defaultlcon содержит полный путь и имя файла, содержащего значок. Часто в нем содержится указание на приложение, которое открывает файл (например, excel.exe для xls-файлов), но иногда можно найти ссылку на .dll- или .ico-файл, содержащий набор значков. За именем файла следует запятая и индекс, который указывает номер отображаемого значка. Например:
C:\Program Files\Photoshop\Photoshop.exe, 15
указывает на файл Photoshop.exe, расположенный в папке C:\Program Files\Photoshop, и на 16-й значок в этом файле (нумерация значков начинается нулем). Иногда в разделе Defaultlcon можно увидеть что-то вроде
%SystemRoot%\system32\wmploc. dll, -731
Здесь %SystemRoot% — это переменная, которая представляет папку Windows (обычно C:\Windows). Когда значение (По умолчанию), в котором хранится эта информация, помещается в расширяемое строковое значение (описано в разделе «Суть реестра — его значения»), Windows, прежде чем получить значок, преобразовывает имя файла в C:\Windows\System32\wmploc.dll. Иногда можно увидеть после имени файла и отрицательную величину (здесь -731), которая представляет ID ресурса (resource ID) используемого значка, — в противоположность положительному значению, указывающему индекс (позицию) значка, как описано ранее.
■9&Г-
Трюк, который можно применить для некоторых файлов изображений, например #«, I ico, — установить Defaultlcon значение (По умолчанию) «%1» (вводить с кавычка-^ ^ •, ми). Эта «самоссылка» указывает Проводнику использовать встроенное в файл ' изображение в качестве значка файла. Хотя это работает и для некоторых других форматов изображений, эта функция оказалась вытеснена IconHandlers.
В большинстве случаев можно задать свой значок для конкретного типа файла, указав полный путь к файлу .exe, .dll, .ico или .bmp в значении (По умолчанию) раздела Defaultlcon. (Подсказка: некоторые хорошие значки находятся в \Windows\System32\ shell32.dll.) Укажите число — номер значка, который следует отображать, или не указывайте, чтобы использовать первый значок в файле. В некоторых случаях Проводник распознает изменение сразу же, в связи с тем что он кэширует значки; возможно, понадобится перезапустить Windows, чтобы эти изменения полностью вступили в силу.
Самым легким способом изменить значок для типа файла является применение стороннего инструмента, такого как Fileiype Doctor, обсуждаемого в следующем разделе.
SiU
Единственный случай, когда Windows не будет обращать внимание на значок, указанный в разделе Defaultlcon, — это когда задействован IconHandler, который генерирует динамичные значки (рис. 3.15), обычно показывая миниатюры содержимого файлов вместо статических значков.
IconHandler — это программа, которая понимает формат файла (обычно файл .dll в папке программы приложения), с которым файл связывается. Например, Adobe Acrobat (версия 7.0 и позже) использует эту функцию, чтобы облегчить предварительный просмотр миниатюр файлов .pdf. Для расширения .pdf IconHandler приложения Acrobat может быть указан в любом из следующих разделов реестра:
HKEY_CLASSES_ROOT\.pdf\ShellEx\IconHandler
HKEY_CLA5SES_R00T\. pdf \ShellEx\{BB2E617C-0920-11D1-9A0B-00C04FC2D6C1} HKEY_CLASSES_ROOT\AcroExch. Document. 7\ShellEx\IconHandler HKEY_CLASSES_ROOT\AcroExch.Document.7\ShellEx \{BB2E617C-0920-llDl-9A0B00C04FC2D6C1)
HKEY_CLASSES_ROOT\SystemFileAssociations\. pdf\ShellEx\IconHandler HKEY_
CLASSES_ROOT\SystemFileAssociations\.pdf\ShellEx\{BB2E617C-0920-llD19A0B-
00C04FC2D6C1}
HKEY_CLASSES_ROOT\SystemFileAssociations\image\ShellEx\IconHandler HKEY_
CLASSES_ROOT\SystemFileAssociations\image\ShellEx\{BB2E617C-0920-llD19A0B-
00C04FC2D6C1)
Выясняется, что Adobe выбрал четвертый из этих разделов, чтобы зарегистрировать свой IconHandler. Значение (По умолчанию) в этом разделе содержит 38-значный класс ID, который указывает на запись в HKEY_CLASSES_ROOT\CLSID, содержащую подробные данные о файле .dll.
Если ссылка на IconHandler содержится в одном из разделов под названием IconHandler, то указанный в нем .dll-файл отвечает за динамически сгенериро-^ ванный значок. Но более новые программы для ссылки на IconHandler будут ис-
% пользовать раздел {BB2E617C-0920-lldl-9A0B-00C04FC2D6Cl}. Для получения дополнительной информации о разделе SystemFileAssociations см. «Расширение возможностей ваших типов файлов».
Хотите заменить динамические значки статическими? Найдите ссылку на IconHandler и сотрите раздел IconHandler или раздел {BB2E617C-0920-lldl-9A0B-00C04FC2D6Cl}-это отключит IconHandler и позволит Проводнику использовать статический значок, определенный в разделе Defaultlcon.