Як я "переконую" програми відкрити власне файл .lnk у Windows 7?


37

.lnkФайл в Windows , являє собою фактичний файл призначений бути ярлик на інший файл. Однак мені дуже хочеться переглянути вміст у самому .lnkфайлі. Я вважаю, що це зробити буквально неможливо; незалежно від того, що я намагаюся, мої програми відкривають вміст файлу, на який він вказує (перетягнути / впустити в текст чи шістнадцятковий редактор, файл | відкрити з тексту чи шестигранного редактора тощо)

Чи я можу сказати програмі реально відкрити файл .lnk замість файла, на який він вказує?


3
Ви завжди можете перейменувати його на .txt або щось інше. Зазвичай це не призводить до втрати даних.
Джон

1
@Chipperyman За винятком того, що це не працює. Ви не можете легко перейменувати .lnkфайли з новим розширенням.
287352

Відповіді:


19

Відкриття ярликів

Для того, щоб відредагувати ярлик, вам, очевидно, потрібно спершу його відкрити, і це виявляється складним. У деяких випадках ви можете змусити програми завантажувати файли ярликів, використовуючи аргумент командного рядка:

"X:\Path\to\program.exe" "X:\my shortcut.lnk"

Однак, залежно від того, завантажена ціль посилання або фактичний файл ярлика, залежить від програми. Ось список (не в певному порядку) деяких безкоштовних шестигранних редакторів, які підтримують їх поза коробкою:


Обхід

Якщо ви не можете завантажити вміст файлу ярлика, ви можете відкрити командний рядок і перейменувати .lnkфайл на інше, неіснуюче розширення, таке як .lne:

cd /d "X:\Folder\containing\shortcuts"
ren "my shortcut.lnk" "my shortcut.lne"

Якщо у вас є декілька файлів, ви також можете перейменувати всі одразу:

ren *.lnk *.lne

Тоді ви зможете обробляти ці ярлики так само, як і звичайні файли. Коли ви закінчите, переконайтесь, що перейменуєте їх назад, щоб відновити їх звичайну функціональність.


Додаткова інформація

Ярлик або посилання на оболонку містить інформацію метаданих, яка використовується для доступу до конкретної цілі посилання . Він розбирається та інтерпретується оболонкою Windows. З офіційної документації:

Структура посилань оболонки зберігає різну інформацію, яка корисна кінцевим користувачам, включаючи:

  • Комбінація клавіш, яку можна використовувати для запуску програми.

  • Описний коментар.

  • Налаштування, що керують поведінкою програми.

  • Необов’язкові дані, що зберігаються в додаткових розділах даних .

Джерело: [MS-SHLLINK]: Формат бінарного файлу Shell Link (.LNK) - Огляд

Ярлики зберігаються у вигляді двійкових файлів і їх неможливо редагувати за допомогою стандартного текстового редактора. Типовий .lnkфайл виглядає приблизно так:

00000000  4C 00 00 00 01 14 02 00 00 00 00 00 C0 00 00 00  L...........À...
00000010  00 00 00 46 DC 03 00 02 20 00 00 00 C6 EF 52 BE  ...FÜ... ...ÆïR¾
00000020  10 04 CA 01 C6 EF 52 BE 10 04 CA 01 60 45 8A 67  ..Ê.ÆïR¾..Ê.`EŠg
00000030  20 04 CA 01 00 9A 04 00 00 00 00 00 01 00 00 00   .Ê..š..........

Перші двадцять байтів завжди такі:

4C 00 00 00 01 14 02 00 00 00 00 00 C0 00 00 00 00 00 00 46

Подальше читання


Використання HxD для його відкриття File | Openфактично, здається, відкрило .lnkфайл. Спасибі.
Jez

@Jez Я оновив свою публікацію, щоб включити додаткову інформацію. Повідомте мене, якщо у вас є додаткові запитання.
і31415

16

Я спробував це, і це працює для мене в Windows 8.1:

Відкриття LNKфайлів у Блокноті:

  • Просто перетягніть їх у вікно Блокнота. Якщо ви відкриєте їх у Openдіалоговому вікні, Блокнот відкриє EXEфайл, на який вказує LNKфайл.

Відкриття LNKфайлів у шестигранному редакторі HxD :

  • Відкрийте їх, як і будь-який файл, за допомогою діалогового вікна "Відкрити" ( FileOpen)

Відкриття LNKфайлів за допомогою командного рядка:

  • Перейдіть до папки, що містить LNKфайли, і введіть команду: TYPE SHORTCUTNAME.LNK

Відкриття LNKфайлів практично в будь-якій програмі:

  • Запустіть командний рядок, перейдіть до папки, в якій знаходиться програма, використовуйте команду: PROGRAM_NAME.EXE "path to LNK file"

8

Вся суть файлу .lnk полягає у тому, щоб Windows розглядала його як посилання на інший файл, тому редагувати його слід важко!

Можливо, це допоможе, якби ви описали ЧОМУ ви хочете відредагувати це. Ви можете змінити налаштування .lnk-файлу, клацнувши правою кнопкою миші та вибравши Властивості .

Якщо ви дійсно хочете його відредагувати, вам потрібен спеціальний інструмент. Є кілька таких, зокрема:

NB: Я жодного з них не пробував, просто гуглив їх.

ОНОВЛЕННЯ:

Не знаю, чому я раніше про це не думав, але ви можете редагувати властивості за допомогою PowerShell. З цієї попередньої відповіді на переповнення стека :

Copy-Item $sourcepath $destination  ## Get the lnk we want to use as a template
$shell = New-Object -COM WScript.Shell
$shortcut = $shell.CreateShortcut($destination)  ## Open the lnk
$shortcut.TargetPath = "C:\path\to\new\exe.exe"  ## Make changes
$shortcut.Description = "Our new link"  ## This is the "Comment" field
$shortcut.Save()  ## Save

Оскільки для цього використовується об'єкт Shell COM, ви також можете це зробити з WSH або навіть VBA в Office!


2
Я хочу відредагувати його вміст, бажано в шестигранному редакторі, тому що я думаю, що він може бути пошкодженим, і я не довіряю Провідникові правильно розповісти мені його вміст.
Джез

Я гадаю, що тоді відтворювати його? Якщо так, спробуйте одного з редакторів, хоча я не впевнений, що це зіпсувало б.
Джуліан Найт

1
Що ж, ніколи не було важко редагувати, принаймні в Windows XP. Насправді було важче переконати програму трактувати її аналогічно симпосилання. Якщо запустити будь-яку консольну програму, наприклад edit, аргумент шляху до ярлика відкриє файл ярлика. Програми, які трактують ярлик аналогічно символьному посиланню, аналізують його самостійно (можливо, через функції оболонки). Чи вдалося Windows використовувати символьні посилання, схожі на ярлики після XP?
Руслан

Ціна прогресу! Немало сенсу мати механізм визначення посилань, які більшість додатків ігнорує. Я не знаю, з багатьох причин потрібно редагувати .lnk безпосередньо.
Джуліан Найт

3
@JulianKnight У мене був один раз використання для їх програмного генерування для розміщення в папці, яка виступала в якості індексу. Я не мав припускати жодних прав на встановлення програмного забезпечення, але ми вже використовували VBA. Змінити шаблон .lnk виявилося простіше, ніж створити його з нуля.
Кріс Х

4

Файли .LNK інтерпретуються оболонкою. Якщо ви відкриєте командний рядок і викликаєте інструмент редагування (скажімо, наприклад, Блокнот), використовуючи файл .LNK як аргумент, який повинен обійти оболонку та відкрити вміст самого файлу .LNK.

notepad.exe shortcut.lnk

Ні, це не працює. Це відкриває файл, на який .lnkвказує.
Jez

У якому додатку ви намагаєтесь відкрити посилання?
Wes Sayeed

3
Це неправильно. Я спробував цю відповідь, і вона працює.
Виняк

3
@Vinayak Це досить сміливе твердження. Це може працювати для вас у ситуації, в якій ви його використовуєте, але це може не працювати для Jez.
Джон

1

Якщо ви використовуєте CMD для запуску програми з файлом посилання в якості параметра, цей параметр передається дослівно програмі. Саме програма повинна вирішити, як обробити посилання.

Я перевірив це разом із FRHED , безкоштовним (і портативним) шестигранним редактором: коли ви запускаєте його з командного рядка, передаючи посилання як параметр, він підкаже, чи хочете ви відкрити файл, зв'язаний ( Так ), саме посилання ( Ні ) або Скасувати .

Як не дивно, якщо ви використовуєте Open у меню FRHED File, він відкриває цільовий файл, не запитуючи.

У XP я FRHED у контекстному меню SendTo , і це працює так само, як і CMD . Я думаю, що Win7 схожий (я використовую систему Win7 для спеціальної програми, і я буду робити прості тести на ньому, як вище, але я не псуюся з його конфігурацією).


1
Це не Windows спонукає вас. Це Frhed запитує вас, що робити
Vinayak

Цілком правильно: нерозумно - я зміню свою відповідь.
AFH

Я вважаю, що введення « Блокнота» у моє SendToменю дуже корисне, дозволяючи мені відкривати будь-який файл (включаючи ярлики) у «Блокноті».
Скотт,

Остаточне (?) Спостереження: будь-яка програма для перегляду чи редагування на базі DOS завжди відкриє посилання, ніколи не є цільовою, оскільки функція відкриття файлів DOS нічого не знає про посилання, тому не робить для них спеціального поводження, на відміну від відкритого файлу Windows .
AFH

1

Якщо у вас є підстави часто редагувати такі файли, додайте ярлик до notepad.exe у свою папку SendTo (In Win 7: C: \ Users \ USER \ AppData \ Roaming \ Microsoft \ Windows \ SendTo). Це робить "Надіслати на notepad.exe" доступним у Вашого Rt. Клацніть контекстне меню. Файл .ink відкриється, його можна редагувати та зберігати в notepad.exe.


0

.lnk-файли - це лише файли, поки компонент вищого рівня, такий як Explorer.EXE, не призначить їх. На нижчому (NTFS) рівні вони все ще мають нормальну структуру, включаючи потік даних. Зокрема, весь вміст знаходиться вfoo.lnk::$DATA потоці. Не всі засоби вищого рівня розпізнають цей синтаксис. Якщо вони просто припустять, що це дивне ім'я файлу і передадуть його, вони отримають вміст .lnk.

Наприклад, у командному рядку MORE < foo.lnk::$DATA > conбуде надруковано дані, але це трохи химерно (частини двійкові)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.