|

Как изменить значок сетевой папки в Windows

Описание проблемы:

Есть файловый сервер со множеством папок. Некоторым из них нужно поменять значки, чтобы визуально быстрее их считывать.

Значки должны отображаться при удалённом доступе через Проводник с компьютера пользователя.

Для папок, находящихся на вашем компьютере, это легко делается через свойства папки. На вкладке «Настройка».

План

  1. Добавить всем нужным папкам на сервере атрибут ReadOnly (это никак не повлияет на основные функции 🤷‍♂️).
  2. В групповой политике компьютера включить "Разрешить удаленные пути в ярлыках файлов"
  3. Создать файл desktop.ini.
  4. Конвертировать иконку в формат .ico.
  5. Положить desktop.ini и иконку в папку и сделать скрытыми.

Подробно

Добавить папкам ReadOnly

Почему-то этот параметр является важным и без него реально работать ничего не будет.

Нужно добавить атрибут только самой папке. При этом возможность создавать, удалять, редактировать файлы и папки внутри останется. Также можно будет удалять и саму папку.

Сделать это можно как через Командную строку, так и через PowerShell:

attrib +r <путь к папке>
(Get-Item <путь к папке>).Attributes = "ReadOnly"

Если хотите добавить ReadOnly всем папкам сразу, используйте рекурсию)

Get-ChildItem <путь к родительской папке> -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {$_.PSIsContainer} | foreach {$_.Attributes = "ReadOnly"}

Включить групповую политику

Политика называется «Разрешить удаленные пути в ярлыках файлов». Она нужна нам для того, чтобы далее мы могли использовать относительные пути для иконок. Иконка будет храниться в той папке, для которой предназначена, и путь её, соответственно, будет задаваться относительно этой папки.

Если хотите видеть иконки с разных компьютеров, на всех нужно включить эту политику.

Это можно сделать тремя способами:

  1. В редакторе реестра добавить запись
    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer] "EnableShellShortcutIconRemotePath"=dword:00000001
  2. Открыть оснастку gpedit.msc (Редактор групповой политики) и включить параметр «Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Проводник -> Разрешить удаленные пути в ярлыках файлов»
  3. Если дело происходит в домене, сделать то же что и в пункте 2, но через редактор групповой политики домена. Это включит галочку сразу на всех подконтрольных компьютерах.

Создать desktop.ini

В папке, для которой нужно установить значок, создать файл desktop.ini следующего содержания:

[.ShellClassInfo]
IconResource=.\icon.ico,0
IconFile=.\icon.ico
IconIndex=0

Директивы IconResource и IconFile + IconIndex взаимозаменяемы. Более новые версии винды используют первое, старые — второе.

Положить вместе все файлы

Туда же забрасываем иконку, предварительно сконвертировав её в формат .ico. Я конвертировал первым попавшимся онлайн редактором по запросу «png to ico».

Имя файла должно совпадать с тем, что указано в desktop.ini (в данном случае — icon.ico)

Чтобы файлы не мозолили глаза, в свойствах поставьте им галочку «Скрытый».

Готово. Иконка папки должна смениться на ту, которую вы положили внутрь.

Если не работает

Дополнительно можете попробовать:

  1. Добавить файлам desktop.ini и icon.ico аттрибуты «Скрытый» и «Системный» командой attrib +h +s desktop.ini.
  2. В desktop.ini убрать .\ перед именем файла

Поддержать выход новых материалов

https://www.donationalerts.com/r/cbagpipe — в сообщении можете задать вопрос и указать контакт для ответа, прислать идею для нового контента или просто похвалить меня 😊.

Все, кто поддерживает мою работу, увековечены на отдельной странице.