Как изменить значок сетевой папки в Windows
Описание проблемы:
Есть файловый сервер со множеством папок. Некоторым из них нужно поменять значки, чтобы визуально быстрее их считывать.
Значки должны отображаться при удалённом доступе через Проводник с компьютера пользователя.
Для папок, находящихся на вашем компьютере, это легко делается через свойства папки. На вкладке «Настройка».
План
- Добавить всем нужным папкам на сервере атрибут
ReadOnly
(это никак не повлияет на основные функции 🤷♂️). - В групповой политике компьютера включить
"Разрешить удаленные пути в ярлыках файлов"
- Создать файл
desktop.ini
. - Конвертировать иконку в формат
.ico
. - Положить
desktop.ini
и иконку в папку и сделать скрытыми.
Подробно
Добавить папкам ReadOnly
Почему-то этот параметр является важным и без него реально работать ничего не будет.
Нужно добавить атрибут только самой папке. При этом возможность создавать, удалять, редактировать файлы и папки внутри останется. Также можно будет удалять и саму папку.
Сделать это можно как через Командную строку, так и через PowerShell:
attrib +r <путь к папке>
(Get-Item <путь к папке>).Attributes = "ReadOnly"
Если хотите добавить ReadOnly
всем папкам сразу, используйте рекурсию)
Get-ChildItem <путь к родительской папке> -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {$_.PSIsContainer} | foreach {$_.Attributes = "ReadOnly"}
Включить групповую политику
Политика называется «Разрешить удаленные пути в ярлыках файлов». Она нужна нам для того, чтобы далее мы могли использовать относительные пути для иконок. Иконка будет храниться в той папке, для которой предназначена, и путь её, соответственно, будет задаваться относительно этой папки.
Если хотите видеть иконки с разных компьютеров, на всех нужно включить эту политику.
Это можно сделать тремя способами:
- В редакторе реестра добавить запись
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer] "EnableShellShortcutIconRemotePath"=dword:00000001
- Открыть оснастку
gpedit.msc
(Редактор групповой политики) и включить параметр «Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Проводник -> Разрешить удаленные пути в ярлыках файлов» - Если дело происходит в домене, сделать то же что и в пункте 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
)
Чтобы файлы не мозолили глаза, в свойствах поставьте им галочку «Скрытый».
Готово. Иконка папки должна смениться на ту, которую вы положили внутрь.
Если не работает
Дополнительно можете попробовать:
- Добавить файлам
desktop.ini
иicon.ico
аттрибуты «Скрытый» и «Системный» командойattrib +h +s desktop.ini
. - В
desktop.ini
убрать.\
перед именем файла
Поддержать выход новых материалов
https://www.donationalerts.com/r/cbagpipe — в сообщении можете задать вопрос и указать контакт для ответа, прислать идею для нового контента или просто похвалить меня 😊.
Все, кто поддерживает мою работу, увековечены на отдельной странице.