Допустим, у вас две ОС 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. Однако вы его все равно будете видеть, если в файловом менеджере включено отображение скрытых файлов наряду с системными.
Я использую уникальные значки для папок, чтобы упростить их визуальный поиск. А вы задаете красивые значки любимым папкам? Поучаствуйте в опросе и отпишитесь в комментариях!
McLotos
Если честно, не совсем понял для чего эта статья. Эта возможность появилась несколько лет назад, и про неё сейчас не знает только ленивый. А те кто не боится экспериментов пошли дальше — с restorator’ом в зубах и головой на плечах можно делать вещи куда интересней чем просто смена внешнего вида папок =)
Vadim Sterkin
Ответ в первом абзаце. Я отвечаю на все письма читателей блога, и хотя я редко даю подробные инструкции в почте, я всегда задаю направление. Этого оказалось недостаточно, поэтому я опубликовал запись в рубрике Вопрос — Ответ.
Она появилась более чем несколько лет назад. Но даже если про нее знают все неленивые, описанное решение не лежит на поверхности.
Видимо, вы опытный оформитель, легко расправляетесь с ресурсами Windows с помощью Ресторатора. Можете описать в двух словах, как в нем решается поставленная задача?
Echinosor
Делал нечто подобное:
1) если располагать внутри файл, то неудобно (если выделяешь и часто переносишь данные). Чтобы всё видеть включено отображение скрытых файлов. Поэтому внутри папки должно быть минимум скрытых файлов.
2) Назначал картинку через пункт папки Свойства (Win XP) но неудобно, часто без объяснения причин слетало.
3) Часто пользуюсь iColorFolder — работает по правой клавише, бесплатно (не надо ломать), в папке только desktop.ini
equinox.net
Значки на папках использую давно, и именно для облегчения визуального поиска. Очень помогает. Использую метод desktop.ini.
Vadim Sterkin
Верное замечание. Пожалуй, добавлю в статью, что файлу нужно присвоить атрибут «скрытый».
Давно хочу задать дискуссию по этому вопросу в отдельной записи, ибо не понимаю, зачем «все видеть» :)
MegaVolt
Папкам значки не меняю — все равно работа с файлами идёт через ТС.
Иногда меняю значки часто используемым ярлыкам на рабочем столе.
MicroAmper
Очень полезная статья, особенно тем, у кого нет времени на эксперименты с системой. Спасибо.
Vadim Sterkin
MegaVolt, значки папок отображаются даже в Total Commander (сюрприз! :)
MicroAmper, я рад, что вам пригодилась информация! Юмор выбранного ника оценил ;)
YaNkEE
Вадим, действительно, об этом не знают только ламеры ^_^
Но если это краткий совет для них — предлагаю описать autorun.ini для той же, например, флешки (чтобы у флешки был свой значок или даже запускалось определенное приложение и т.д., ну Вы сами знаете).
З.Ы.: обновился браузер, стерлось автозаполнение форм =( пришлось вводить ник и мыло вручную =( вот, жалуюсь на судьбу.
YaNkEE
У меня все скрытые файлы видны. Поэтому при перетаскивании все равно мешает (только если иконка в папке). Хорошо, что при нажатии Ctrl+A ХРюша спрашивает про выделение скрытых.
А насчет холивара про «скрытые файлы» — устроить можно ^^. Мне, например, лучше все видеть. Да, нужно это не каждый раз, но, как говориться, редко, да метко. Например, файл hosts приходиться редактировать (брат полазит младший, накачает «программ для голосов на вк» и все). То он же где-то почитал советы по ускорению и отредактировал boot.ini и молчал, мол ничего не делал. Появилась новая строка выбора системы при запуске. Но я его вывел на чистую воду. Так что это нужно.
З.Ы. сорри за оффтоп, Вадим, размещаете чужие полезные статьи? Куда кинуть на рассмотрение?
Vadim Sterkin
Когда сложность материала находится много ниже уровня читателя, нужен такт, чтобы удержаться от выражения своего превосходства над теми, кому информация в новинку.
Между тем, уровень знаний моих читателей сильно разнится, исходя из их комментариев и вопросов в письмах.
Пользователям Windows 7 эта информация не нужна, т.к. в ней автозапуска не существует, есть только автовоспроизведение. В Vista и XP опытные читатели, наверняка, отключили автозапуск для предотвращения вирусных заражений. Таким образом, ценность материала для моей аудитории весьма сомнительна, но спасибо за совет!
Являясь автором блога, я предпочитаю задавать тон дискуссии, поэтому я и говорил об отдельном обсуждении. По ходу замечу, что в Windows 7 файл hosts не имеет атрибутов «Системный» или «Скрытый».
Так что я очень осторожно отношусь к навешиванию ярлыка «ламер». Не знать чего-то не зазорно, и это не ламерство. Под это определение я подвожу, скорее, нежелание включать мозг для обработки информации и повышения своих знаний.
Да, новые, если их присылает автор, и они нигде не опубликованы, разве что кроме авторского блога. Предложения о публикации можно направлять через форму обратной связи.
MicroAmper
На XP данный метод будет работать? У меня не отображается скрытый файл desktop.ini (отображение включено).
Виталий
В дополнении к атрибуту «скрытый» можно добавить атрибут «системный», и тогда даже если включено отображение скрытых файлов, иконка под ногами мешаться не будет, ибо часто отображение системных файлов отключено.
Vadim Sterkin
MicroAmper, вопрос в том, не отображается файл или не создается. Откройте командную строку и выполните:
Путь к папке свой укажите.
YaNkEE, у вас появился прекрасный шанс ^^ продемонстрировать свои знания в этом вопросе «для ламеров», тем более у вас ХР :)
Виталий, спасибо за дополнение, я его тоже интегрировал в статью.
MicroAmper
Я создавал пустую папку и на ней проверял. После указания пути к файлу ico, значок папки меняется, и при наведении курсора на эту папку, вместо надписи ПАПКА ПУСТА, появляется надпись РАЗМЕР : 157 байт, что вероятно указывает о наличии файла desktop.ini . Но не получается его найти. Может необходимо задействовать функцию ОТОБРАЖЕНИЕ СИСТЕМНЫХ ФАЙЛОВ ? Сейчас проверю. По поводу реплик о ламерстве, я думаю что уровень знаний у каждого пользователя, определён приоритетом использования компъютера. Я покупал компъютер для решения задач связанных с моей работой. На изучение всего остального не всегда хватает времени.
MicroAmper
С помощью Total Commander удалось найти desktop.ini и даже открыть его [.ShellClassInfo]
IconFile=D:\Новая папка (2)\libr.ico
IconIndex=0
[.ShellClassInfo.A]
IconFile=D:\Новая папка (2)\libr.ico
[.ShellClassInfo.W]
IconFile=D:+AFwEHQQ+BDIEMARP- +BD8EMAQ/BDoEMA- (2)+AFw-libr.ico
MicroAmper
Всё получилось при условии, если во второй строке после названия файла ico не указывать ,0 Проверял на XP. Отображению изменённой папки не помешало даже наличие (на другой системе) IconPackager.
Vadim Sterkin
Чудеса, с проводником не сладить :) Но я ведь вам сразу сказал, как открыть, а вы пытались его увидеть, что в данном случае как раз не нужно.
Андрей
Вадим, спасибо за статью, ещё прибавилось ы моёй библиотеке.
Но скажу честно, мне это как не обязательно, а как нахожу нужную паку, просто — это мой компьютер.
Vadim Sterkin
Андрей, ну так и у меня тоже мой компьютер :) Но значок облегчает и ускоряет визуальный поиск.
И если по списку папок можно перемещаться с клавиатуры (вводя первые буквы), то в Избранном надо щелкать.
YaNkEE
Ну, во-первых, не все читателя блога сидят на семерке ^^ Во-вторых, то же самое автовоспроизведение предлагает запустить autorun.exe, вам ли не знать. Так что смысл есть всегда.
Vadim Sterkin, конечно, автозапуск отключен, Вы меня просто обидели =). Но я предлагал это в качестве свистоперделки для друзей, чтобы они радовались и удивлялись, открывая твою флешку, чтобы скинуть что-то полезное.
А если у них после этого еще и перевернется изображение на мониторе, это доставит море лулзов ^_^Я и не подразумевал эту статью =)
Не имею чести знать-с ;) Я знаю, что в ХРюше скрытый, для этого мне нужно все видеть. Спасибо, приму к сведениям.
Да, согласен. Определение нуб будет правдивее.
Настал мой час! Не нужно командной строки.
MicroAmper,
Зайдите в папку и прямо в адресной строке после адреса папки пропишите
и нажмите Enter. Думаю, пояснять не надо.
MicroAmper, если в ico-файле одна иконка — 0 не нужен. Если это приложение с вшитыми иконками, библиотека или ico-файл с несколькими иконками — нужен индекс иконки.
MicroAmper
Да, признаю, не вовремя включил мозги и был за это наказан. Не могли-бы Вы уточнить назначение нижних строк (после двух верхних) [.ShellClassInfo]
IconFile=D:\Новая папка (2)\libr.ico
IconIndex=0
[.ShellClassInfo.A]
IconFile=D:\Новая папка (2)\libr.ico
[.ShellClassInfo.W]
IconFile=D:+AFwEHQQ+BDIEMARP- +BD8EMAQ/BDoEMA- (2)+AFw-libr.ico
YaNkEE
MicroAmper, извините, я Вас обманул. Даже если в файле 1 иконка — нужен индекс. НО: в Windows 7 индекс иконки пишеться через запятую, в Windows XP для этого отдельная строка (IconResource вместо IconFile и IconIndex):
Индекс выделен жирным шрифтом. Просто я не внимательно прочитал ваш пост =( Там уже стоит 0, и через запятую его писать не надо =)
А насчет двух последних строк — я не знаю. Это точно пусть к иконке. Только кэшированный. Попробуйте удалить все, кроме
но перед этим сделайте копию содержимого в другой файл. Может на компьютере разные системы стоят и записывают в него свои пути. Гадать не буду.
Специально пересмотрел все папки со значками — везде в desktop.ini находиться
и меняется только индекс.
Vadim Sterkin
YaNkEE, я сегодня зачистил за вами немало комментов, плюс правил еще пару. Роль уборщицы меня начинает напрягать. Вы не могли бы чуть с большей ответственностью подходить к тому, что вы тут пишете?
Теги html не работают в коде, потому что это код!
MicroAmper
Привет Всем! Чтобы не запутатся уточню, содержимое [.ShellClassInfo]
IconFile=D:\Новая папка (2)\libr.ico
IconIndex=0
[.ShellClassInfo.A]
IconFile=D:\Новая папка (2)\libr.ico
[.ShellClassInfo.W]
IconFile=D:+AFwEHQQ+BDIEMARP- +BD8EMAQ/BDoEMA- (2)+AFw-libr.ico
указано до редактирования. Редактировал только одну строку (IconFile=libr.ico). Всё работает.
MicroAmper
YaNkEE Может на компьютере разные системы стоят и записывают в него свои пути. Гадать не буду.
Да, стоят две XP на разделах C , E.
MicroAmper
В случае XP, при редактировании desktop.ini , достаточно оставить три строки [.ShellClassInfo]
IconFile=libr.ico
IconIndex=0
YaNkEE
Vadim Sterkin, извините конечно.
Но я же не могу сам редактировать свои комментарии.
baw17
аналогично использую Total commander ибо проводник windows не дает той безграничной свободы
MegaVolt
>> значки папок отображаются даже в Total Commander (сюрприз! :)
я в курсе. кстати, не факт — можно отключить показ ассоциированных значков.
это, конечно, дело вкуса, но зачем мне уникальные иконки размера 16х16 ? всё равно папки ищутся по имени, а не виду.
Vadim Sterkin
Если заведете себе планшет с Windows, почувствуете разницу :)
gora
Сам давно пользуюсь этой возможностью, но не всегда она работает. Задать иконку через свойства папки получается всегда, а вот после копирования папки, с этим скрытым файлом, на другую машину иконка отображается не всегда! :(
Для проверки сделал sfx и поместил в него 4 папки с разными иконками и способами адресации к ним в ini файле. После распаковки sfx на виртуалке все папки оказались с иконками, но если я создаю «большой» sfx (несколько сотен мб), то иконки на папке распаковки уже нет. При этом ini файл лежит в папке и путь к иконке в нем правильный (проверял и с абсолютными и с относительными путями).
Вот такое наблюдение… :(
Aleks
Перепробовал здесь все варианты что описаны, ничего не получается,
Иконка в обще не меняется.
А после Задания иконки через свойства папки, то Иконка после переноса на другое место исчезает, ничего не помогает, ставил так:
[.ShellClassInfo]
IconFile=MyEgy.ico
IconIndex=0
Помогите пожалуйста, кто знает способ чтобы сменить Иконку в папке, и чтобы она не исчезала потом при переносе папки в любое место?…
Жду помощи от знающих людей… Заранее спасибо.
gora
В статье не сказано об атрибуте самой папки со значком. Однако значок отображается только, если у папки установлен атрибут «R».
При смене значка через свойства папки это делает сама система. При ручной установке значка об этом должен позаботится пользователь. При копировании такой папки нужно копировать и атрибуты папки, дабы сохранить отображение значка.
Vadim Sterkin
В Windows 7 у папок нет атрибута «Только для чтения».См. Почему у папок флажок «Только для чтения» имеет три состоянияgora
Vadim Sterkin,
Не буду с Вами спорить, но я вижу этот атрибут и могу установить его
http://gora.7zsfx.info/test/icon_folder.PNG
Тем более, что после снятия этого атрибута у папки значок перестанет отображаться.
Aleks
А как нужно копировать папку с атрибутами вместе?
gora
xCopy с ключом /K, например.
Aleks
Я так понял это в командной строке делается, а не могли бы вы написать пример кода полностью…
И ещё, как быть если я допустим хочу дать свою папку другу, с моей иконкой, или записать на диск, или флешку Папку с моей Иконкой.
Я же не буду объяснять другу как нужно именно копировать мою папку чтобы Иконка не пропала…
Как быть в такой ситуации?..
Vadim Sterkin
Я все-таки настаиваю на том, что в Windows 7 папки не имеют атрибута «Только для чтения».Это даже написано в справке!И это легко проверить. Поставьте в свойствах флажок этого атрибута, потом выполните команду
dir /ar C:\folder
Папка в списке не отобразится. Зайдите снова в свойства — флажок не такой, как вы ставили.
Поэтому никаких утилит для копирования атрибутов папки не требуется.
Я выделил в записи алгоритм успеха, ведущий к цели с минимальными телодвижениями.
Aleks
У меня Windows XP, И такая запись не работает:
[.ShellClassInfo]
IconResource=MyEgy.ico,0
Работает только так: (При установленном Атрибуте «Только чтение»)
IconFile=MyEgy.ico
IconIndex=0
Но при переносе папки в другое место, сбрасывается Атрибут у папки почемуто, и моя Иконка не отображается?
Я сделал запись вот такую: (и ставлю Атрибут «Только чтение»)
[.ShellClassInfo]
IconResource=MyEgy.ico,0
IconFile=MyEgy.ico
IconIndex=0
InfoTip=А здесь пишем любой текст
Это типа для того чтобы моя Иконка отображалась в любой ОС, и ХР и 7, Но как быть с Атрибутом Папки, почему он сбрасывается при переносе папки, и моя Иконка не отображается после этого.
Что я не так делаю? Подскажите кто знает. Мне нужна Папка чтоб в ней моя иконка работала на всех ОС, и в любом месте…