3

У меня есть простой файл desktop.ini, который применяет значок папки. Он работает просто отлично в локальной папке.

Я бы хотел, чтобы он работал в сетевом расположении, поскольку у нас есть внешний жесткий диск, подключенный к нашей сети. Однако файл desktop.ini похоже, не влияет на указанную сеть.

Что я делаю неправильно?

5 ответов5

3

Вы должны пометить папку как системную или только для чтения, чтобы заставить desktop.ini работать. readonly лучше, так как системные папки по умолчанию исключены из проводников. attrib +r (имя папки)

3

Почему это происходит

Windows не будет читать desktop.ini если это не системный файл (похоже, только для чтения, но системный файл означает, что он может оставаться скрытым, даже если вы устанавливаете несистемные скрытые файлы как видимые).

Почему вы, похоже, не можете это исправить

На общем ресурсе Samba (реализация Unix протокола SMB/ сетевого ресурса), даже если вы, например, зайдете в свойства и установите "только для чтения", он будет игнорироваться и не будет установлен. Это связано с тем, что Samba по умолчанию не хранит эти разрешения - что, по-видимому, связано с (вероятно, незначительным) налогом на производительность, поскольку разрешения (AFAIK) устанавливаются и считываются в альтернативных потоках в виде текстовых данных (вероятно, не будет работать, если вы разделяя некоторые элементарные FS, такие как FAT).

Как это исправить

Сначала убедитесь, что Samba хранит разрешения в стиле DOS (например, "system"), добавив следующую строку в определение общего ресурса:

store dos attributes = yes

Может быть, вы можете добавить это в [Global] , вместо этого я добавил его в определенный ресурс.

Кроме того, некоторые люди скажут вам отредактировать неправильный файл.

  • /usr/share/samba/smb.conf <= ерунда
  • /etc/samba/smb.conf <= правильный файл

Перезапустите Samba (sudo service samba restart), а затем выполните быструю проверку, чтобы выяснить, можно ли с помощью проводника Windows сделать файл доступным только для чтения и, если он сохраняется.

Хорошо, теперь вы можете сделать desktop.ini системным / скрытым файлом. Для этого перейдите в папку, где он находится с командной строкой, и используйте:

attrib +s +h desktop.ini

При желании также (если ваш значок является относительным и хранится в той же папке, что и моя).

attrib +s +h folder.ico

Наконец, вам нужно пометить саму папку как доступную только для чтения (не имеет смысла и звучит глупо, поэтому вы знаете, что это допустимо).

attrib +r .

Конечно, вы можете (должны) написать это. Используя MSysGit, я сделал это на своем NAS:

find . -type f -iname desktop.ini | while read -r i; do
    echo "Processing \"$(basename "${i%/*}")\""
    attrib +s +h "$i"
    attrib +s +h "${i%/*}/folder.ico" # Optional, in case you have these.
    attrib +r "${i%/*}"
done
3

Прочитайте эту статью http://helpdeskgeek.com/how-to/customize-folder-icons-desktop-ini/

IconFile

Если вы хотите указать пользовательский значок для папки, установите для этой записи имя файла значка. Расширение файла .ico является предпочтительным, но также можно указать файлы .bmp или файлы .exe и .dll, содержащие значки. Если вы используете относительный путь, значок доступен людям, которые просматривают папку по сети. Вы также должны установить запись индекса значков.

В более словах вам придется указать относительный путь к вашей иконке

например ./hiddenfolder/mycoolicon.ico

Обратите внимание, что вам может потребоваться поместить две (или более) точки, если каталог папки .ico находится вне места расположения файла desktop.ini - попробуйте поэкспериментировать и обновить окно Windows/File Explorer.

Удачи

2

Проблема связана с хостом, содержащим папку. Некоторые сетевые устройства хранения данных (NAS), такие как DROBO, например, работают внутри Linux, и их сетевая оболочка SAMBA не учитывает и не правильно реализует стандартные атрибуты файлов Windows (R, S, H, A, I).

Таким образом, относительные пути НЕ помогут, если файл desktop.ini не читается с самого начала !!!

Поскольку хост-устройство, RAID, NAS или диск неправильно отображают бит "Система" или "Только для чтения", в котором Windows ожидает запуска файла desktop.ini, этот файл никогда не читается, и его содержимое не имеет значения.

Пока не нашли решения этой проблемы.

-1

Чтобы правильно сообщить о типе файла "Система" или "Только для чтения", вы должны изменить «smb.conf» на вашем NAS. В разделе [Global] добавьте строку:

хранить DOS атрибуты = да

Наслаждайтесь !

M2C

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .