.lnk
Файл в Windows , представляет собой фактический файл предназначен быть ярлык на другой файл. Тем не менее, я действительно хочу просмотреть содержимое самого .lnk
файла. Я считаю, что это буквально невозможно сделать; Независимо от того, что я пытаюсь, мои приложения открывают содержимое файла, на который он указывает (перетаскивание в текстовый или шестнадцатеричный редактор, файл | открытие из текстового или шестнадцатеричного редактора и т. д.)
Можно ли как-то сказать программе, чтобы она открывала файл .lnk вместо того файла, на который он указывает?
.lnk
файлы с новым расширением.Ответы:
Открытие ярлыков
Чтобы отредактировать ярлык, вам, очевидно, нужно сначала его открыть, и это оказывается сложно. В некоторых случаях вы можете заставить программы загружать файлы ярлыков с помощью аргумента командной строки:
Однако, будет ли загружена цель ссылки или фактический файл ярлыка, зависит от программы. Вот список (в произвольном порядке) некоторых бесплатных шестнадцатеричных редакторов, которые поддерживают их из коробки:
HxD
Открыть диалог Да
Перетаскивание Нет
XVI32 , Free Hex Editor Neo , Крошка Hexer , wxHexEditor , Hex-редактор MX , Редактор Frhed
Открыть диалог Нет
Перетаскивание Да
Временное решение
Если вам не удается загрузить содержимое файла ярлыка, вы можете открыть командную строку и переименовать
.lnk
файл в другое несуществующее расширение, такое как.lne
:Если у вас есть несколько файлов, вы также можете переименовать их все сразу:
После этого вы сможете обрабатывать эти ярлыки как обычные файлы. Когда вы закончите, не забудьте переименовать их обратно, чтобы восстановить их обычную функциональность.
Дополнительная информация
Ярлык, или ссылка оболочки , содержит информацию метаданных, используемую для доступа к определенной цели ссылки . Он анализируется и интерпретируется оболочкой Windows. Из официальной документации:
Ярлыки хранятся в виде двоичных файлов и не могут быть изменены с помощью стандартного текстового редактора. Типичный
.lnk
файл выглядит примерно так:Первые двадцать байтов всегда следующие:
дальнейшее чтение
источник
File | Open
самом деле, похоже, открыло.lnk
файл. Спасибо.Я пробовал это, и это работает для меня на Windows 8.1:
Открытие
LNK
файлов в блокноте:Open
диалогового окна, Блокнот откроетEXE
файл, на который указываетLNK
файл.Открытие
LNK
файлов в шестнадцатеричном редакторе HxD :File
→Open
)Открытие
LNK
файлов с помощью командной строки:LNK
файлы, и введите команду:TYPE SHORTCUTNAME.LNK
Открытие
LNK
файлов практически в любой программе:PROGRAM_NAME.EXE "path to LNK file"
источник
Весь смысл файла .lnk для Windows , чтобы рассматривать ее как ссылку на другой файл , поэтому он должен быть трудно редактировать!
Возможно, это помогло бы, если бы вы описали ПОЧЕМУ вы хотите изменить его. Вы можете изменить настройки файла .lnk, щелкнув правой кнопкой мыши и выбрав Свойства .
Если вы действительно хотите отредактировать его, вам нужен специальный инструмент. Есть несколько из них, в том числе:
NB: Я не пробовал ничего из этого, просто погуглил их.
ОБНОВИТЬ:
Не знаю, почему я не думал об этом раньше, но вы можете редактировать свойства через PowerShell. Из этого предыдущего ответа о переполнении стека :
Поскольку для этого используется COM-объект Shell, вы также можете сделать это с помощью WSH или даже VBA в Office!
источник
edit
, с аргументом пути к ярлыку, откроет файл ярлыка. Программы, которые обрабатывают ярлык аналогично символической ссылке, сами разбирают его (возможно, через функции оболочки). Windows использовала символические ссылки, похожие на ярлыки после XP?Файлы .LNK интерпретируются оболочкой. Если вы откроете командную строку и вызовете свой инструмент редактирования (скажем, «Блокнот»), используя файл .LNK в качестве аргумента, это должно обойти оболочку и открыть содержимое самого файла .LNK.
источник
.lnk
указывает.Если вы используете CMD для запуска программы с файлом ссылки в качестве параметра, этот параметр передается программе дословно. Программа сама решает, как обращаться со ссылкой.
Я проверил это с помощью FRHED , бесплатного (и переносимого) шестнадцатеричного редактора: когда вы запускаете его из командной строки, передавая ссылку в качестве параметра, он запрашивает, хотите ли вы открыть файл, связанный с ( Да ), саму ссылку ( Нет ) или Отмена .
Как ни странно, если вы используете Open в меню FRHED File, он открывает целевой файл без запроса.
В XP у меня есть FRHED в моем контекстном меню SendTo , и это работает так же, как CMD . Я предполагаю, что Win7 похож (я использую систему Win7 для выделенного приложения, и я буду делать простые тесты на нем, как указано выше, но я не связываюсь с его конфигурацией).
источник
SendTo
меню, позволяя мне открывать любые файлы (включая ярлыки) в Блокноте.Если у вас есть причина часто редактировать такие файлы, добавьте ярлык для notepad.exe в папку SendTo (в Win 7: C: \ Users \ USER \ AppData \ Roaming \ Microsoft \ Windows \ SendTo). Это делает «Отправить на notepad.exe» доступным с вашего Rt. Нажмите контекстное меню. Откроется файл .ink, который можно отредактировать и сохранить в notepad.exe.
источник
Файлы .lnk - это просто файлы, пока высокоуровневый компонент, такой как Explorer.EXE, не назначит им управление. На более низком уровне (NTFS) они все еще имеют нормальную структуру, включая поток данных. В частности, весь контент находится в
foo.lnk::$DATA
потоке. Не все инструменты более высокого уровня распознают этот синтаксис. Если они просто предполагают, что это странное имя файла и передают его, они получат содержимое .lnk.Например, в командной строке
MORE < foo.lnk::$DATA > con
будут напечатаны данные, но это немного бессмысленно (части двоичные)источник