Назначение значков для каталогов

Материал из TCKB 2.0
Перейти к:навигация, поиск

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

Симптомы болезни

Если для папки открыть диалог свойств (Alt+Enter или команда Свойства в контекстном меню), в открывшемся диалоге будет вкладка Настройка, где вы можете задать значок, который будет отображаться вместо стандартного значка папки (как в Проводнике, так и в Total Commander). Разумеется, это не единственный способ, в интернете есть громадное количество программ, которые более или менее успешно умеют проделывать то же самое. И случается так, что после установки значка папка полностью исчезает из панелей Total Commander. Чем же это вызвано и как это лечить? Об этом мы сейчас и поговорим.

Немножко анатомии

Для начала я расскажу, как же вообще работает эта технология, что происходит в системе при назначении значка папке. В большинстве случаев внутри папки просто создаётся файл desktop.ini, где указано, какой значок должен отображаться. Вот пример содержимого такого файла:

[.ShellClassInfo]
IconFile=C:\Program Files\TotalCmd\totalcmd.exe
IconIndex=0

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

Дело в том, что для атрибут "системный" обычно используется для пометки файлов, существование и целостность которых критична для запуска и нормального функционирования системы, так что модификация их (не говоря уж об удалении) может систему запросто убить. Total Commander по умолчанию не отображает файлы, имеющие атрибут "скрытый" или "системный": первые по той причине, что само название атрибута предполагает такое поведение, а вторые — чтобы пользователь ненароком не обрушил систему, например, немножко промахнувшись при удалении. Вот и получается, что если при назначении значка использовался атрибут "системный", TC быстренько уберёт с глаз этот каталог, внезапно оказавшийся критичным для работоспособности Windows.

Лекарства и показания к их применению

Наконец, мы переходим к главному вопросу: а что же делать-то? Вариантов на самом деле немного, всего два. Первый состоит в том, чтобы включить в TC показ скрытых и системных файлов. Его преимущества в том, что больше не надо задумываться, есть что-то кроме того, что отображено на экране, или нет, можно быть почти на 100% уверенным, что выведено полное содержимое каталога. (Почему почти? См. врезку.)

Врезка
Есть несколько причин, почему содержимое каталога может отображаться не полностью:
1) использование функциональности списка исключений в TC;
2) системное перенаправление каталога System32 в SysWOW64 в 64-битных Windows);
3) работа руткитов, маскирующих своё пребывание в системе.
CaptainFlint

Недостатком же является загромождение обзора лишними файлами и каталогами. Впрочем, этот недостаток можно устранить, настроив список исключений: в этом случае вы сами будете определять, что показывать, а что — нет.

Второй способ заключается в том, чтобы использовать правильные атрибуты. Чтобы сменить атрибут у каталога, который уже стал системным, нужно проделать следующее:

  1. включить в TC показ скрытых и системных файлов;
  2. выбрать требуемый каталог и вызвать команду изменения атрибутов (cm_SetAttrib);
  3. снять атрибут "системный" и установить "только для чтения";
  4. выключить показ скрытых и системных файлов.

Очень важный момент, который многие упускают из виду: менять атрибуты каталогов нужно только через диалог изменения атрибутов в TC! Системный диалог Проводника мало того, что не позволяет контролировать атрибут "системный", так ещё и "только для чтения" применяет не к самой папке, а к вложенным файлам, что в контексте нашей проблемы совершенно бессмысленно.

Надеюсь, эта статья поможет тем, кто предпочитает разбираться, что и почему происходит у него в системе.

Ключевые слова: значки, иконки, папки, каталоги, не отображается, системный