DLL со значками: какие библиотеки Windows содержат иконки и как их использовать

Смена значка папки или ярлыка в Windows почти всегда упирается в один и тот же диалог «Сменить значок», который по умолчанию открывает библиотеку shell32.dll — именно в ней, а не в отдельных файлах .ico, система хранит большую часть своих иконок. Если вы ищете «dll со значками», то вам нужны библиотеки shell32.dll, imageres.dll и moricons.dll из папки C:\Windows\System32 — это три главных источника системных пиктограмм.

В этой статье разберём, какие DLL-файлы Windows содержат значки, чем они отличаются, как посмотреть их содержимое штатными средствами, как извлечь иконку в отдельный файл и почему менять сами библиотеки — плохая идея.

Что такое DLL со значками и зачем они нужны

DLL (Dynamic Link Library) — это динамически подключаемая библиотека, в которой программы хранят общие ресурсы: код, диалоги, строки и графику. Значки внутри DLL лежат в виде так называемых ресурсов иконок (icon resources) — каждая иконка имеет порядковый индекс, начиная с нуля.

Такой подход экономит место и упрощает обновление: вместо сотен отдельных файлов .ico система держит один компактный контейнер. Когда вы назначаете папке значок из shell32.dll, Windows записывает в ярлык или desktop.ini путь к библиотеке и номер иконки, например shell32.dll,3.

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

Основные системные DLL со значками

В Windows существует несколько библиотек-«хранилищ» иконок. Все они лежат в каталоге C:\Windows\System32 (на 64-битных системах часть дублей находится в C:\Windows\SysWOW64).

ФайлЧто содержитОсобенности
shell32.dllБазовые значки: папки, диски, корзина, настройкиОткрывается по умолчанию в диалоге смены значка
imageres.dllСовременные иконки интерфейса WindowsОсновной набор в Windows 10 и 11
moricons.dllСтарые значки времён Windows 3.x/9xПодходит для «ретро»-оформления
ddores.dllИконки устройств: звук, мониторы, сетьКрупные и детализированные пиктограммы
pnidui.dll, netshell.dllСетевые значкиСтатусы подключения, Wi-Fi, адаптеры

Количество иконок в каждой библиотеке зависит от версии Windows: с обновлениями Microsoft добавляет новые ресурсы и иногда меняет их индексы. Поэтому значок «номер 41» в imageres.dll на разных сборках системы может выглядеть по-разному.

Как посмотреть значки в DLL штатными средствами

Самый простой способ увидеть содержимое библиотеки — воспользоваться встроенным диалогом смены значка. Он работает одинаково для ярлыков и папок.

  • 📁 Кликните правой кнопкой по ярлыку или папке и выберите Свойства.
  • 🖱️ Перейдите на вкладку Ярлык (для папки — Настройка) и нажмите Сменить значок.
  • 🔍 В поле «Искать значки в следующем файле» введите путь, например %SystemRoot%\System32\imageres.dll, и нажмите Enter.
  • 🎨 Прокрутите список, выберите понравившуюся иконку и подтвердите кнопкой «ОК».

Чтобы посмотреть другую библиотеку, просто подставьте её имя в тот же путь: %SystemRoot%\System32\moricons.dll или %SystemRoot%\System32\ddores.dll. Если файл не содержит иконок, диалог покажет пустой список или сообщение об отсутствии значков.

📊 Откуда вы обычно берёте значки для папок и ярлыков?
Из системных DLL Windows
Скачиваю наборы иконок из интернета
Рисую или конвертирую сам
Не меняю значки вообще

Как извлечь иконку из DLL в отдельный файл

Штатный диалог Windows позволяет только назначить значок, но не сохранить его как файл. Если нужна иконка в формате .ico или .png — например, для своей программы или сайта — потребуется сторонняя утилита-просмотрщик ресурсов.

Общий принцип работы таких инструментов одинаков: вы открываете DLL, программа выводит дерево ресурсов, а затем позволяет экспортировать выбранную иконку. Известные примеры подобных утилит — IconsExtract и редакторы ресурсов вроде Resource Hacker; перед использованием любой программы скачивайте её только с официального сайта разработчика и проверяйте файл антивирусом.

☑️ Безопасное извлечение иконки из DLL

Выполнено: 0 / 5

⚠️ Внимание: никогда не редактируйте и не заменяйте оригинальные системные DLL в папке System32. Эти файлы защищены механизмом Windows Resource Protection, а их повреждение может привести к сбоям интерфейса, ошибкам проводника или невозможности загрузки системы. Работайте только с копией файла, скопированной в другую папку.

Как назначить значок из DLL папке, ярлыку и библиотеке

Для ярлыка всё делается через «Свойства → Сменить значок», как описано выше. С обычной папкой нюанс в том, что Windows сохраняет выбор в скрытом файле desktop.ini внутри этой папки — поэтому при переносе папки на другой диск значок иногда «слетает», если путь в записи был относительным или библиотека недоступна.

Запись в desktop.ini выглядит примерно так:

[.ShellClassInfo]

IconResource=C:\Windows\System32\imageres.dll,3

Число после запятой — это индекс иконки внутри библиотеки. Если вы вручную правите desktop.ini, убедитесь, что у файла выставлены атрибуты «скрытый» и «системный», а у самой папки — атрибут «только чтение» или «системная»: без этого проводник может проигнорировать настройку. Точное поведение зависит от версии Windows, поэтому при проблемах проще переназначить значок через стандартный диалог.

Почему индексы иконок отличаются на разных ПК

Набор ресурсов в shell32.dll и imageres.dll меняется от версии к версии Windows. Microsoft добавляет новые значки и иногда сдвигает нумерацию, поэтому ярлык, созданный на одном компьютере, на другом может показать другую картинку. Для переносимых ярлыков надёжнее использовать отдельный .ico-файл рядом с программой.

Типичные проблемы и их решения

Иногда после смены значка папка или ярлык продолжает показывать старую иконку. Чаще всего виноват кэш значков — Windows хранит миниатюры в файле iconcache в профиле пользователя и не всегда обновляет его сразу. Помогает перезапуск проводника через «Диспетчер задач» или выход из учётной записи и повторный вход.

Если диалог «Сменить значок» показывает пустой список, проверьте путь к библиотеке: опечатка в имени файла или указание несуществующего каталога даёт именно такой симптом. Также убедитесь, что вы открываете файл из System32, а не случайную одноимённую библиотеку из папки какой-нибудь программы.

  • 🔄 Значок не обновляется — перезапустите Проводник через диспетчер задач.
  • 📭 Пустой список иконок — проверьте правильность пути и имени DLL.
  • ↩️ Значок сбросился после переноса папки — переназначьте его заново или используйте локальный файл .ico.
  • 🛡️ Система блокирует доступ к файлу — это нормально, копируйте DLL в другую папку и работайте с копией.

⚠️ Внимание: не скачивайте «сборники системных DLL» с посторонних сайтов. Файлы shell32.dll и imageres.dll уже есть в вашей системе, а библиотеки из интернета могут быть заражены или несовместимы с вашей версией Windows. Замена системной библиотеки чужой версией — один из верных способов получить незагружающуюся систему.

FAQ: частые вопросы о DLL со значками

Где находятся DLL со значками в Windows 10 и 11?

В папке C:\Windows\System32. Основные файлы — shell32.dll, imageres.dll, moricons.dll, ddores.dll. Быстрее всего открыть их через диалог «Сменить значок», введя путь с переменной %SystemRoot%.

Можно ли добавить свои иконки в shell32.dll?

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

Чем отличается imageres.dll от shell32.dll?

shell32.dll — исторически более старая библиотека оболочки с базовыми значками, а imageres.dll содержит более современный набор иконок интерфейса. В актуальных версиях Windows обе присутствуют и дополняют друг друга.

Почему после обновления Windows значки на ярлыках изменились?

Обновления системы могут менять набор ресурсов и индексы иконок внутри библиотек. Ярлык ссылается на номер иконки, и если под этим номером оказалась другая картинка, внешний вид изменится. Решение — заново выбрать значок или использовать отдельный файл .ico.

Как вернуть стандартный значок папки?

Откройте свойства папки, перейдите на вкладку «Настройка», нажмите «Сменить значок» и выберите стандартную иконку папки из shell32.dll или imageres.dll. Альтернатива — удалить скрытый файл desktop.ini внутри папки, после чего Windows вернёт оформление по умолчанию.