Допустим, у вас две ОС Windows, и вы хотите, чтобы в каждой из них у любимой папки отображался одинаковый значок. Либо вам хочется видеть привычный значок папки на флэшке при ее подключении в любой системе. Мой читатель Дмитрий спросил по почте, как это сделать.
Значок папки задается в ее свойствах на вкладке «Настройка» кнопкой «Сменить значок». По умолчанию предлагается выбрать значок из файла %SystemRoot%\system32\SHELL32.dll, но вы можете указать любую другую динамическую библиотеку (например, в imageres.dll много значков), исполняемый файл (EXE) или файл значка (ICO).
Как только вы измените значок, он будет отображаться не только в списке папок, но и в адресной строке и области сведений внизу папки.
А в самой папке появится скрытый файл desktop.ini, в котором указан путь к файлу со значком и номер ресурса после запятой.
[.ShellClassInfo] IconResource=C:\Windows\system32\SHELL32.dll,26
Обратите внимание, что путь записывается в абсолютном виде. Отсюда очевидно, что для отображения нужного значка в любой системе необходимо соблюдение двух условий:
- наличие значка по указанному пути, что не сработает, если системы установлены на разные диски
- совпадение номера ресурса, которые могут отличаться в разных операционных системах (например, в Windows 7 и XP)
Вы уже видите решение проблемы? Все просто!
- Задайте для папки любой значок в графическом интерфейсе проводника.
- Положите в папку нужный значок и отредактируйте файл desktop.ini, указав относительный путь к значку, т.е. только имя файла и номер ресурса.
Так, я положил в папку значок video.ico и прописал в файле desktop.ini:
[.ShellClassInfo] IconResource=video.ico,0
После закрытия и повторного открытия окна проводника, значок сменился.
Upd 05-Nov-2016. В Windows 10 1607 значок не отображается при копировании папки, а также перемещении за пределы диска. Исправить это можно, задав папке атрибут «Только для чтения» из командной строки:
attrib +r "C:\Users\Vadim\Downloads\test"
Он будет отображаться для этой папки в любой системе, даже если папка находится на флэшке. Чтобы значок не «путался под ногами», ему можно присвоить атрибуты «Скрытый» в свойствах файла на вкладке «Общие» и «Системный» командой attrib. Однако вы его все равно будете видеть, если в файловом менеджере включено отображение скрытых файлов наряду с системными.
Я использую уникальные значки для папок, чтобы упростить их визуальный поиск. А вы задаете красивые значки любимым папкам? Поучаствуйте в опросе и отпишитесь в комментариях!
gora
Вадим, я прочитал по Вашей ссылке, но там как раз и сказано, что атрибут таки есть у папки. Правда добавлено что он не применяется к самой папке и это странно, т.к., я наблюдаю обратное.
Предложу свой вариант проверки.
Делаем два батника.
Первый с текстом:
Второй с текстом:
Оба батника поместим в корень папки с desktop.ini в котором прописано все для отображения иконки как описано в Вашей статье.
Запустим первый — атрибут установлен у папки и иконка отображается.
Запустим второй — атрибут снят и иконка больше не отображается.
Это доказывает (по крайней мере мне), что:
— атрибут R у папки есть
— этот атрибут влияет на отображение иконки у папки.
Vadim Sterkin
Ок, вы правы, у папок действительно есть атрибут «Только для чтения», который указывает проводнику на то, что нужно читать desktop.ini. Я расширил раздел Почему у папок флажок «Только для чтения» имеет три состояния в статье про скрытые и системные файлы.
Но в этой записи все правильно — когда значок задается в GUI проводника, атрибут папки меняется автоматически и создается desktop.ini. Остается отредактировать файл.
Алекс, теперь ваша проблема. Откуда и куда вы переносите папку? Проверьте ее атрибуты до и после переноса командой:
В выводе команды слева от пути будет атрибут.
Aleks
Проблема при обычном копировании папки, правой кнопкой мышки, в любое место, хоть в другой диск, хоть на «Рабочий стол», после переноса папки таким способом, у неё пропадает Атрибут, и следовательно не отображается моя Иконка.
Сегодня загрузил Total Commander, пробую им копировать и переносить папку с моей Иконкой, всё получается и моя иконка отображается как надо, при переносе папки в любое место.
Проблема немного решается, можно в Total Commander заархивировать Папку, и таким образом можно Архив переносить на другую ОС — (Другу хочу дать), и я так думаю моя Иконка не должна збиться.
А если заархивировать Папку Не в Total Commander, то после распаковки Архива, Иконка не отображается.
Вот такая вот питрушка получается, видимо так ОС — ХР с глюком сделана, что при переносе обычным способом папку (копированием правой кнопкой мышки), то у неё сбиваются Атрибуты.
Наверное тут ничего нельзя поделать!…
Олег
Сам додумался до этого способа. Сделал его универсальным для себя. Значица вначале нужно поставить любой значок на папку. Далее в файле desktop.ini заменить все содержимое на:
[.ShellClassInfo]
IconResource=Icon.ico,0
IconFile=icon.ico
IconIndex=0
положить в папку иконку с именем icon, и всё на этом иконка у папки будет ваша и будет отображаться в любой системе и в ХП и в висте и в седьмой. На значок поставить нужно атрибут скрытый и системный тотал командером можно.
Тока понять не могу одно — если вначале не поставить на папку значок средствами винды. то при тупом копировании в неё нужного «правильно заполненного» файла desktop.ini и иконки с названием icon, значок не появляется. Что за атрибут на папку ставит винда? Как бы без первоначального назначения «ненужного» значка сразу скопировав в неё что надо всё работало.?
gora
Об этом атрибуте я уже писал несколькими постами выше.
у себя применяю такой батник:
В папке должна быть хотя бы одна иконка в формате .ico, далее туда клады упомянутый батник и запускаю его. На этом все, батник можно удалить.
PS. Вадим, у меня (Win7, IE8) кнопки форматирования, внизу окна, просто перезагружают страничку, посему извините за «неоформленный» код.
Vadim Sterkin
Код я оформил. Про перезагрузку страницы мне как-то писали, но в IE9 проблемы не наблюдаю.
Lyba
Большое спасибо. С этим разобрались.
А как сделать, чтобы названия иконок были на русском языке?
Vadim Sterkin
Поясните вопрос…
Lyba
Vadim Sterkin,
Поясняю…
Уважаемый Вадим, дело в том, что в Desktop, при введении названия папки на русском языке в последнем файле IconFile= , иконка на папке не создаётся. Когда меняется язык с русского на английский, то всё получается как надо. Поэтому и прошу подсказать, как сделать, чтобы названия иконок были на русском языке?
Например: папка «Документация производства» и соответствующая иконка.
Vadim Sterkin
Люба, не могу воспроизвести вашу проблему, у меня все ок с кириллицей в пути. Но все проще — положите иконку в папку и выберите ее в свойствах папки на вкладке «Настройка». Потом откройте desktop.ini, удалите путь к иконке, оставьте только название.
Lyba
Vadim Sterkin,
Вадим, биг спасибо.
http://i023.radikal.ru/1302/cd/d0c255097800.jpg
Lyba
Уважаемый Вадим, подскажите мне — я правильно всё делаю ? ? ?
Vadim Sterkin
Люба, я не понимаю, зачем вы даете файлу значка русское имя. Пусть будет smeta.ico и все.
gora
Lyba,
Имя иконки может быть кириллическим, но тогда файл desktop.ini должен быть сохранен в кодировке Кириллица Windows (1251)
Lyba
Мы живём и трудимся в Великой РОССИИ, читаем, пишем,
и разговариваем на русском языке, поэтому — это принципиально!
Так всё-таки, подскажите мне — я правильно всё делаю ? ? ?
Vadim Sterkin
Люба, я не вижу связи между патриотизмом и именем файла значка. Вас не смущает, что ОС называется Windows, а не Окна? Да и имя свое вы как-то непатриотично пишете :)
А так, вам подсказали, в какой кодировке сохранять файл (возьмите Akelpad или любой другой редактор, поддерживающий ее).
P.S. Мне тут из зала подсказывают, что можно набрать латиницей CMETA.ico :))
Роман
Вчера озадачился этой проблемкой. Копирую многим папку с ярлыками к софтинке и постоянно приходится значок с нашим лого на папку ставить… надоело настраивать каждый раз…
Для XP я делал самораспаковывающийся архив с этой папкой и уже назначенным ей значком — работает…
Но на Win7 этот вариант не проходит…
Тут пришла мне в голову мысль, что можно наверное путь к значку задать относительно папки! Задал, поэкспериментировал со слэшами, не помогает…
Счас рою рунет в поисках решения… Смотрю Вы тут описываете все то, что я делал вчера…
…Как у Вас это получилось?
У меня чего-то не срабатывает…
Значек с именем et.ico лежит в папке, на которую мы его устанавливаем.
Desktop.ini поправил следующим образом:
gora
Роман, скрипт для этого есть здесь:
http://forum.oszone.net/post-2103273.html#post2103273
Олег
В Desktop.ini пишите:
[.ShellClassInfo]
IconFile=et.ico
IconIndex=0
IconResource=et.ico,0
и будет отображаться и в XP и в висте и в седьмой и в восьмой.
Роман
Олег,
Не пашет…
значок папки сменился на стандартный, будто папка без файлов…
Обычно же в Win7 папка приоткрытая и видно, что там лежит…
сейчас значок стал каку пустой папки :.((
А с батником гемор…
gora
Роман,
Наличие значка у папки зависит не только от файла Desktop.ini и его содержимого, но и от атрибутов папки. Установите атрибут папки «Только для чтения», без этого значок у папки будет стандартный.
Роман
gora, точняк, благодарю!
Desktop.ini заполнен, как написал Олег
Атрибут только для чтения поставил, и все ожило!!!
Единственное, только чтение ставил TotalCommander’ом, просто виндузовыми средствами — результата не дало…
Олег
Роман,
Я всегда так делаю.
У меня таким образом: Иконка, которая находится в папке, она же и будет отображаться называется: icon, с расширением соответственно icon.ico, в этой же папке лежит файл Desktop.ini, в нём записано только:
[.ShellClassInfo]
IconFile=icon.ico
IconIndex=0
IconResource=icon.ico,0
Кроме того у папки должен быть установлен атрибут: R
Здесь делают это как-то скриптом, я же программой Directory Opus, наверное есть и другие способы назначить папке этот атрибут и они гораздо проще.
Вы если сделает так:
Назначить папке любой значок, с любого места (при этом винда атрибут этот установит), далее положить в неё файлы:
icon.ico и Desktop.ini с тем содержимым что я выше написал. И всё будет отображаться. Проверил уже тысячу раз. Ну и ещё у этих файлов у меня атрибуты скрытый и системный.
Иногда отображается не сразу, после обновления окна файлового менеджера.
Balamutick
Ха прочитал уже 20-ую или больше статью Вадима и понял, что или админы мыслят одинаково, или просто Вадим брат близнец, начиная от программ используемых, кончая способами работы.
Только отличие, что о некоторых способах Вадим уже знает и пользуется, а я ещё нет, и пока не пользуюсь.
Но с каждой статьёй различий всё меньше и меньше :)
Vadim Sterkin
Я не админ :)
Balamutick
Vadim Sterkin, да я как бы тоже, работаю им, а ничего не умею :), так на ладан всё дышит, только тут в блоге и самобразовываюсь.
Vadim Sterkin
Сертифицируйтесь — будут структурированные знания.
Evgeniy Mc
Здравствуйте, этот метод перестал работать в новой Windows 10 Юбилейная. Иконка с папки слетает при копировании или переносе папки.((
Vadim Sterkin
Спасибо за отчет, подтверждаю — добавил примечание и обходной путь в статью