
Я получаю доступ к общему ресурсу Windows и'значок папки' раздел (нижний) отсутствуетв его настройках. Он отображается правильно в локальных папках. Я хотел бы иметь его в обоих.
Окно свойств папки с выделенным параметром значка
решение1
Вам нужно будет использовать файл desktop.ini для настройки значка. Обычно это все, что вы делаете, когда используете кнопку "Изменить значок" выше. Полную документацию см.:Как настроить папки с помощью desktop.ini Ниже приведен пример файла desktop.ini:
[DeleteOnCopy]
Owner=MyUser
Personalized=13
PersonalizedName=My Folder
[.ShellClassInfo]
[email protected],-12689
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-237
Кстати, если вы хотите сделать это без необходимости вручную создавать desktop.ini, вы можете создать папку локально, применить нужные настройки и украсть ее desktop.ini. (Если вы его не видите, скопируйте всю папку; изначально у нее должно быть правильное имя.) Видео на YouTubeПрименить значок к папке на сетевом дискедемонстрирует этот процесс, но использует перемещение папок вместо создания новой папки.
решение2
Прошло много времени с тех пор, как я видел столько быков :)
Щелкните правой кнопкой мыши -> Свойства -> Настроить -> Изменить значок — эта опция недоступна для общих папок SMB.
... ---> Изменение изображения не имеет никакого эффекта.
Desktop.ini НЕ обрабатывается Windows для общих ресурсов SMB, поскольку Linux по-другому интерпретирует бит «Только для чтения» (папки) и неправильно возвращает его Windows:
- В Linux «Только чтение» означает «Только чтение»!
- В Windows «Только чтение» (только для папок) означает процесс Desktop.ini!!!
Предполагается, что существует параметр реестра, который принудительно обрабатывает Desktop.ini, используя флаг «Система» (сверхскрытый) вместо «Только чтение», но мне так и не удалось заставить его работать так, как ожидалось.
Отсутствие обработки desktop.ini на SMB ломает много других вещей, не только значки папок: символические ссылки и персонализированные пространства имен также не работают. Бездельники из Microsoft просто отказываются иметь с этим дело, начиная с Windows NT.
Конечно, всегда можно создать косвенные ссылки для доступа к папкам SMB и вместо этого предоставить эти пользовательские значки, но это вызывает множество других проблем:
- Ссылки на ярлыки оцениваются и кэшируются по умолчанию в Windows при открытии родительской папки, что приводит к «огромным» задержкам в проводнике, если папка содержит ярлыки на медленные или спящие сетевые ресурсы.
- Ярлыки в Windows абсолютны, а не относительны, следовательно, не переносимы. Это создает много проблем с обслуживанием, если целевой корневой путь изменится. Windows также имеет привычку автоматически преобразовывать переменные окружения в абсолютные ссылки, сводя на нет любые попытки обойти это.
- Их глупый сервис «Распределенный клиент отслеживания ссылок» еще больше все портит.
Лучший способ реализовать относительные ссылки в Windows — использовать скрипт VBS. В нативной (текстовой) форме скрипт VBS не будет иметь пользовательского значка, но вы можете назначить пользовательский значок EXE-файлу, если скомпилируете его.
Однако это требует много работы, и скрипт будет создавать предупреждающие сообщения о «ненадежности» каждый раз, когда вы запускаете его из сети, если только скрипт не является локальным или вы не найдете способ его подписать.
VBS Relative Link example:
============================
' This is a VB Script, which emulates a RELATIVE file link/shortcut in Win XP
'
' 1) The first line declares an untyped variable ==> objshell
'
' 2) The second line instantiates a new object derived from ==> Shell.Application
'
' 3) The third line invokes the object's method ==> ShellExecute
'
' with the following parametters: "target path"
' "target's arguments"
' "starting directory"
' "action verb"
' Initial window mode: 0 = Hidden Window
' 1 = Normal Window
' 2 = Minimized
' 3 = Maximized
' 4 = Most recent size and position, keep active window active
' 5 = Current size and position
' 6 =
' 7 = Minimized, keep active window active
' 10 = Default state specified by target application
'
' 4) The last line frees/destroys the shell object
'
'
dim objShell
set objShell = CreateObject("Shell.Application")
objShell.ShellExecute _
"..\..\..\SomePath_Three_Dirs_UP_etc" ,_
"" ,_
"" ,_
"open" ,_
1
set objShell = nothing
===============================================================
решение3
Метод настройки, описанный ssnobody, предполагает, что у вас есть возможность изменить папку на удаленной машине,ичто вы хотите, чтобы внешний вид папки был изменен для всех удаленных и локальных пользователей. Если ни одно из этих условий не верно, вы можете использовать эту альтернативу: создать локальный ярлык для удаленной папки (например, щелкнуть правой кнопкой мыши, перетащить его на локальный рабочий стол и выбрать «создать ярлык»), а затем использовать обычную кнопку «изменить значок» диалогового окна свойств, чтобы изменить значок ярлыка.
решение4
Обойти эту проблему можно, переименовав файл изображения в «folder.jpg» и поместив его в общую папку.
Его увидит любой, у кого есть доступ и кто использует любой из видов «значков» или «плиток» в Проводнике.