Почему более поздние версии Windows продолжают использовать файлы ярлыков вместо символических ссылок?

Почему более поздние версии Windows продолжают использовать файлы ярлыков вместо символических ссылок?

Windows XP и более поздние версии поддерживают символические ссылки. Тем не менее, Windows продолжает использовать файлы ярлыков (которые по сути хранят местоположение связанного файла в виде текста). Почему?

решение1

Я полагаю, есть ряд причин.

  1. Вы можете сохранять различные уровни совместимости для нескольких различных ярлыков одного и того же EXE-файла, поскольку они интерпретируются оболочкой, а не файловой системой.
  2. Некоторые ссылки на ярлыки фактически не существуют в файловой системе. Некоторые из них являются просто ссылками на GUID или специальные строки, интерпретируемые оболочкой.
  3. Вы не можете включать переключатели в символическую ссылку. Вы можете указать на EXE, конечно, но вы не можете сообщить этому EXE никаких дополнительных аргументов.
  4. Выбрать значок для символической ссылки невозможно.
  5. В символической ссылке нельзя выбрать, с каким каталогом работать.
  6. Файлы ярлыков не обязательно должны указывать на файлы, они могут быть гиперссылками или ссылками протоколов (в случае файла .URL).
  7. Файлы LNK могут существовать в любой файловой системе. Символические ссылки обрабатываются самой файловой системой, в случае Windows — NTFS.
  8. Нет никакой реальной необходимости их заменять. Они работают, они крошечные, их можно масштабировать в будущем, если когда-нибудь возникнет необходимость добавить к ним больше функций, чем перечислено выше.
  9. Для создания символической ссылки требуются права администратора (и на то есть веская причина — в противном случае перенаправление невинных файлов на вредоносные можно выполнить с минимальными усилиями).

Причин может быть и больше, но я думаю, что для начала этого достаточно :) - Вот ссылка, предоставленная @grawityздеськоторые дадут дополнительную информацию по некоторым частям этой темы.

решение2

Символическая ссылка — это не более чем путь, завернутый в очень небольшое количество магии файловой системы. Существует множество способов, которыми она может стать недействительной («сломанной»), большинство из которых связаны с переименованием одного или нескольких файлов или каталогов. Поскольку Windows — это потребительское программное обеспечение, у вас может быть большое количество очень плохо спроектированных программ, работающих на «типичной» установке. В результате такого рода поломку гораздо сложнее избежать, чем на сервере, где (теоретически) каждая программа, которая касается диска, является известным количеством.

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

Конечно, для этого можно использовать жесткие ссылки (в некоторой степени), но у жестких ссылок есть ряд недостатков.сложные свойствачто делает их непригодными для использования потребителями. В частности, файлы получают новые номера inode слишком легко, а некоторые программы резервного копирования довольно эффектно ломаются при столкновении с жесткими ссылками. Первое (возможно) можно решить с помощьютуннелирование файловой системы(Именно так ярлыки и решают похожую проблему), но последняя проблема гораздо сложнее.

(Я, вероятно, должен также отметить, что «решение» жестких ссылок с помощью туннелирования определенно нетривиально, поскольку это не просто вопрос повторного присоединения метаданных, которые «затерялись». Иноды привязаны к схеме распределения диска, поэтому вы не можете просто произвольно объединить или переназначить их постфактум, не приложив изрядных усилий. Поскольку ярлыки используют другие метаданные, которые можно легко туннелировать, например, время создания, у них этой проблемы нет.)

решение3

Я понимаю, что это старый вопрос, но нас по-прежнему беспокоит то, что Проводник Windows отображает ярлыки и символические ссылки таким образом, что они практически неразличимы и вводят в заблуждение.

  1. В представлениях Проводника, отображающих значки, оба имеют небольшую стрелку, направленную вверх-вправо, в квадрате, прикрепленном к нижнему левому углу, поэтому здесь они представлены неразличимо.

  2. В древовидном представлении проводника символические ссылки (для каталогов) отображаются как узлы, а ярлыки не отображаются.

  3. Щелчок правой кнопкой мыши > диалоговое окно Свойства — это путаница. Для Symlinks в этом диалоговом окне не упоминается ни "ссылка", ни "Symlink", и на самом деле диалоговое окно отображает вкладку "Ярлык" с информацией о типе цели, местоположении цели и фактическом пути цели. Есть поле Начать в (серое и не применяется к SymLink).

Между тем, для настоящих Ярлыков на вкладке Общие отображается Ярлык "Тип файла" (.lnk). А в диалоговом окне отсутствует вкладка Общий доступ (для каталогов).

Так что если все это оставляет вас в неведении относительно того, что есть что, вам придется прибегнуть к командному окну, в котором команда dir четко идентифицирует символьные ссылки с помощью «» в столбце типа, в то время как ярлыки отображаются как обычные файлы с именем файла, указанным с расширением «.lnk».

Конечно, проблема уже в том, что расширение ярлыка представляет собой сокращение от «link», хотя на самом деле это не ссылки.

Короче говоря, Проводник Windows мог бы гораздо лучше справляться с задачей четкого определения и разграничения этих двух довольно разных вещей, и, безусловно, ему следует прекратить использовать для обозначения того или иного понятия термины, которые вводят в заблуждение или являются откровенно неверными.

Связанный контент