Какие бывают виды ярлыков?


8

Я заметил, что Windows, кажется, способна создавать несколько различных типов ярлыков. В данный момент я пытаюсь понять ярлык папки, который существует в папке «Ярлыки сети» моего профиля. В проводнике Windows он отображается как папка с ярлыком наложения, в списке «Тип» - «Папка с файлами», и двойной щелчок приводит меня в сетевое расположение. Просмотр его в powershell показывает, что это папка, а внутри нее файл "target.lnk".

Кроме того, я часто обнаруживаю, что в окне «Свойства» других ярлыков будет отсутствовать поле «Цель». Я думаю, что это могут быть ярлыки установщика Windows. За исключением переходов и символических ссылок, есть ли другие типы ярлыков? А еще лучше, есть ли какая-нибудь документация, на которую я могу посмотреть все эти списки?

* edit: больше информации ниже о типе ярлыка, который меня прежде всего интересует.

Проводник видит папку (BShacklett) в качестве ярлыка. Powershell видит следующее:

Directory: C:\Users\bshacklett\AppData\Roaming\microsoft\windows\Network
Shortcuts\BShacklett


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
---hs        2012-06-11     10:50         75 desktop.ini
-a---        2012-06-11     10:50       1450 target.lnk

PS C:\Users\bshacklett\AppData\Roaming\microsoft\windows\Network Shortcuts> cat .\BShacklett\desktop.ini

[.ShellClassInfo]
CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
Flags=2

Посмотри мой ответ superuser.com/a/456173/139371
Максимус

Ответы:


4

Там нет полного списка, но то, что вы смотрите, называется «папка-ярлык» , папка, которая ведет себя как ярлык для другого объекта и не имеет документов (по крайней мере, Microsoft).

Как вы видели, это обычная папка, которая содержит файлы desktop.iniи target.lnk. .lnkФайл регулярного файла ярлыка , который должен быть именем target.lnk, и desktop.iniсодержит следующее:

[.ShellClassInfo]
CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
Flags=2

Вы можете увидеть некоторую информацию о том, как она обрабатывается Explorer, в следующей записи реестра:

HKCR\CLSID\{0AFACED1-E828-11D1-9187-B532F1E9575D}

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

Как вы можете догадаться по тому факту, что идентификатор класса, используемый для создания ярлыков папок, указывает на то shell32.dll, что они разрешаются только в Проводнике и интерпретируются как обычные каталоги интерпретатором команд (и PowerShell).

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

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


Небольшое исправление - 2000 и XP действительно поддерживали переходы (они были представлены в версии NTFS, поставляемой с 2000). Тем не менее, они не поддерживали символические ссылки - они пришли с Vista. Предположительно, «ярлыки папок» работают в DOS-версиях Windows (3.1 [?], 95, 98, ME) (и новее).
Боб

@ Боб, спасибо; Я удалил термин Junction, чтобы упростить его и прояснить суть. Ярлыки папок работали в ME и выше (по крайней мере, согласно книге; на самом деле я не проверял).
Synetech

Да, я ожидал, что он будет существовать по крайней мере в 98SE. Опять же, я даже не знал о ярлыках папок до вашего ответа.
Боб

1

Это Shortcutsпросто *.lnkфайлы и Junction/ Hard link/ Symbolic linkобъекты NTFS. Не смешивайте их.

Shortcutsмогут быть нацелены на Paths(файлы и папки) и PIDL's(которые не редактируются в интерфейсе проводника).


1

В дополнение к 4 типам, перечисленным @Maximus, существует 5-й тип, который представляет собой «специальные» системные ярлыки, определенные в реестре.

Примеры этого включают такие вещи, как «библиотеки» в Windows 7, шрифты, принтеры и т. Д.

.lnk и Junctions специфичны для Windows (раздел NTFS). Жесткие и символические ссылки также встречаются во многих других файловых системах, включая все UNIX-подобные ОС (Linux, BSD, Mac и т. Д.).

Жесткие и символические ссылки могут быть установлены только из командной строки с помощью собственных инструментов Windows. Но есть отличная надстройка для Windows Explorer, которая позволяет создавать их. Соединения могут быть созданы из командной строки или из утилиты диска панели управления Windows. Ссылки Lnk зависят от проводника Windows.

Я предпочитаю использовать символические ссылки для большинства целей. Они хорошо работают в смешанных ОС и работают с большинством программ Windows.


Кроме того, символические ссылки намного более совместимы с инструментами резервного копирования / архивирования, которым можно сказать следовать за ними (я не слышал ничего о ссылках lnk)
PPC

Есть ли у вас какие-либо мысли по поводу типа ярлыка, который я упомянул в своем посте? Папка с файлом target.lnk в нем?
bshacklett

@PPC: Маловероятно, что кто-либо, кроме самого Проводника Windows, поймет, что будет следовать ссылкам типа .lnk.
Джулиан Найт

@bshacklett: Мой ноутбук с Windows сейчас отключен, поэтому я не могу продолжать расследование. Вы пытались открыть target.lnk в текстовом редакторе, чтобы увидеть, что внутри? Я думаю, что Максимус дал информацию об этом типе ссылки.
Джулиан Найт

@JulianKnight: Под окнами очень трудно самим открывать файлы lnk, потому что проводник окон пытается следовать за ними и вместо этого открыть цель. Для этого самое простое решение, которое я знаю, - это использовать систему, отличную от Windows. Или вы можете щелкнуть правой кнопкой мыши> свойства, это даст вам большую часть того, что вы хотите знать.
КПП
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.