Я получаю доступ к общему ресурсу Windows, и в его настройках отсутствует раздел « Значок папки » (нижний) . Он правильно отображается в локальных папках. Я хотел бы иметь это с обоими.
5 ответов
Вы захотите использовать файл desktop.ini для настройки иконки. Обычно это все, что вы на самом деле делаете, когда используете кнопку "Изменить значок" выше. Для полной документации см .: Как настроить папки с desktop.ini. Ниже приведен пример файла desktop.ini:
[DeleteOnCopy]
Owner=MyUser
Personalized=13
PersonalizedName=My Folder
[.ShellClassInfo]
InfoTip=@Shell32.dll,-12689
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-237
Кроме того, если вы хотите сделать это без необходимости вручную создавать desktop.ini, вы можете создать папку локально, применить нужные настройки и украсть ее desktop.ini. (Если вы его не видите, скопируйте всю папку; изначально она должна иметь правильное имя.) В видео на YouTube « Применить значок к папке на сетевом диске» показан этот процесс, но вместо перемещения новой папки используются перемещения папок.
Метод настройки, описанный ssnobody, предполагает, что у вас есть возможность изменить папку на удаленном компьютере, и вы хотите, чтобы внешний вид изменялся для всех удаленных и локальных пользователей папки. Если что-то из этого не соответствует действительности, вы можете использовать эту альтернативу: создайте локальный ярлык для удаленной папки (например, перетащите его правой кнопкой мыши на локальный рабочий стол и выберите "создать ярлык"), а затем используйте обычное "изменение" icon »кнопка диалога свойств для изменения иконки ярлыка.
Я давно не видел столько быков :)
Щелкните правой кнопкой мыши -> Свойства -> Настроить ---> Значок изменения недоступен в общих папках SMB.
... ---> Изменение изображения не имеет никакого эффекта.
Desktop.ini НЕ обрабатывается окнами для общих ресурсов SMB, поскольку Linux по-разному интерпретирует бит "Только для чтения" (папки) и неверно сообщает об этом в Windows:
- В Linux "Только чтение" означает "Только чтение"!
- В Windows только для чтения (только с папками) означает процесс Desktop.ini !!!
Предполагается, что есть параметр реестра, который вызывает обработку Desktop.ini с использованием флага "Система" (супер-скрытый) вместо "Только для чтения", но я никогда не заставлял его работать так, как ожидалось.
Отсутствие обработки desktop.ini в SMB ломает многие другие вещи, а не только значки папок: символические ссылки и персонализированные пространства имен также не работают. Бродяги в Microsoft просто отказываются иметь дело с этим, вплоть до Windows NT.
Конечно, всегда можно создать косвенные ссылки для доступа к папкам SMB и вместо этого назначить эти пользовательские значки, но это вызывает множество других проблем:
- Ссылки быстрого доступа оцениваются и кешируются по умолчанию в 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
===============================================================
Обходной путь - переименовать файл изображения «folder.jpg» и поместить в общую папку.
Любой, у кого есть доступ и кто-либо из представлений "значок" или "плитка" в проводнике, увидит его.
Создайте папку значков, например, C:\Icons
на сервере (вы можете скрыть папку из свойств, если не хотите ее видеть).
Поместите ваши файлы .ico
в эту папку.
Настройте ваши общие папки на сервере.
Теперь скопируйте ваши .ico
файлы в C:\Icons
но в вашем ПК-клиенте (как дубликат).
Теперь вы увидите значки Network Share на ПК (на сервере и на клиенте).
Если вы не можете получить доступ к Серверу, вы можете только создавать ярлыки на Клиенте и изменять их значки.