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

68

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

Alex
источник
25
Почему новые версии Windows (и Office) сохраняют текстовые файлы в формате ANSI, а не в формате UTF-8? Либо для совершения несовместимости и неразумности, либо для поддержки устаревших систем ...
ретрография
9
Windows XP и более поздние версии поддерживают символику в определенных файловых системах. Символьные ссылки работают в файловой системе NTFS на жестком диске, но не работают, если копируются на обычный USB-накопитель в формате FAT 32 или на компакт-диск в формате UDF, и могут не работать при копировании на сетевой сервер (как вы часто не знают ОС или файловую систему, используемую удаленным сервером). Файлы ярлыков LNK можно легко скопировать и работать с ними.
GAThrawn
12
.lnkФайлы Windows больше похожи на .desktopфайлы Linux, чем на символические ссылки.
Артуро Торрес Санчес
3
Симлинки хитры в плане безопасности (запутанная проблема с депутатами)
CodesInChaos
2
Итак, вы перестали использовать закладки в браузере, когда появилась NTFS? Это может звучать как абсурдное сравнение, но только если вы думаете, что ярлыки - это не что иное, как указатели на файлы - это просто не тот случай.
Luaan

Ответы:

106

Я полагаю, по ряду причин

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

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

Jonno
источник
2
Кроме того, ярлыки файлов кэшируют определенные метаданные о цели, а интерпретация на уровне оболочки позволяет обновлять ярлыки оболочкой, если цель была перемещена, что будет сложнее при использовании символических ссылок. В общем, смотрите Old New Thing еще раз для различных интересных вещей о ярлыках.
Гравитация
5
@ Grawity Будет ли какое-либо существенное преимущество в переносе этих файлов на файловую систему? Я бы подумал, что файлы .lnk имеют бесконечное пространство для расширения для дальнейшей функциональности, если это необходимо, при этом сохраняя обратную совместимость, и у них не слишком много накладных расходов. Перемещение этого в файловую систему будет немного перегружено, возможно? Хотя я ни в коем случае не эксперт по внутренней работе файловых систем.
Джонно
3
Правда, сама ФС не использовалась бы для большей части этой информации - многие функции .lnk действительно специфичны для Проводника, поэтому хранение всего в качестве точки повторной обработки вместо файла было бы излишним.
grawity
3
Просто хочу отметить, что файлы LNK, насколько я знаю, не могут использоваться для таргетинга URL-адресов (гиперссылок). Вы можете использовать тот же инструмент создания ярлыков в Windows, чтобы создать ярлык для URL, но конечным результатом является файл .URL (обычный текст, по сути, файл INI), а не файл .LNK (двоичный).
Майкл Беккер
3
Или start http://superuser.comкоторый выбирает браузер по умолчанию, как сделал бы настоящий ярлык для URL. Тем не менее, вы можете сделать так, чтобы файлы .LNK указывали на URL. В конце концов, они являются «сериализованными именами COM», и система COM может быть расширена новыми типами имен.
MSalters
6

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

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

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

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

Kevin
источник