Jak „przekonać” programy do otwarcia rzeczywistego pliku .lnk w systemie Windows 7?

37

.lnkPlików w systemie Windows jest plik rzeczywista ma być skrótem do innego pliku. Jednak naprawdę chcę wyświetlić zawartość .lnksamego pliku. Uważam, że jest to dosłownie niemożliwe; bez względu na to, co próbuję, moje aplikacje otwierają zawartość pliku, na który wskazuje (przeciągnij / upuść do edytora tekstowego lub szesnastkowego, plik | otwórz z edytora tekstowego lub szesnastkowego itp.)

Czy jest jakiś sposób, w jaki mogę powiedzieć programowi, aby faktycznie otworzył plik .lnk zamiast pliku, na który wskazuje?

Jez
źródło
3
Zawsze możesz zmienić nazwę na .txt lub coś takiego. Zwykle nie powoduje to utraty żadnych danych.
Jon
1
@Chipperyman Tyle, że to nie działa. Nie można łatwo zmienić nazwy .lnkplików z nowym rozszerzeniem.
287352

Odpowiedzi:

19

Skróty otwierające

Aby edytować skrót, oczywiście najpierw musisz go otworzyć, a to okazuje się trudne. W niektórych przypadkach możesz zmusić programy do ładowania plików skrótów za pomocą argumentu wiersza poleceń:

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

Jednak to, czy ładowany jest link docelowy, czy rzeczywisty plik skrótu, zależy od programu. Oto lista (w dowolnej kolejności) niektórych darmowych edytorów szesnastkowych, które obsługują je po wyjęciu z pudełka:


Obejście

Jeśli nie możesz załadować zawartości pliku skrótu, możesz otworzyć wiersz polecenia i zmienić nazwę .lnkpliku na inne, nieistniejące rozszerzenie, takie jak .lne:

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

Jeśli masz wiele plików, możesz zmienić ich nazwy jednocześnie:

ren *.lnk *.lne

Będziesz wtedy mógł traktować te skróty jak zwykłe pliki. Po zakończeniu zmień ich nazwy, aby przywrócić ich zwykłą funkcjonalność.


Dodatkowe informacje

Skrót lub link do powłoki zawiera informacje o metadanych używanych do uzyskania dostępu do określonego celu linku . Jest analizowany i interpretowany przez powłokę systemu Windows. Z oficjalnej dokumentacji:

Struktura łącza powłoki przechowuje różne informacje przydatne dla użytkowników końcowych, w tym:

  • Skrót klawiaturowy, którego można użyć do uruchomienia aplikacji.

  • Komentarz opisowy.

  • Ustawienia kontrolujące zachowanie aplikacji.

  • Opcjonalne dane przechowywane w dodatkowych sekcjach danych .

Źródło: [MS-SHLLINK]: Format pliku binarnego Shell Link (.LNK) - przegląd

Skróty są przechowywane jako pliki binarne i nie można ich edytować za pomocą standardowego edytora tekstu. Typowy .lnkplik wygląda wewnętrznie mniej więcej tak:

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   .Ê..š..........

Pierwsze dwadzieścia bajtów to zawsze następujące:

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

Dalsza lektura

i31415
źródło
File | OpenWygląda na to, że użycie HxD do otwarcia .lnkpliku faktycznie otworzyło plik. Dzięki.
Jez
@Jez Zaktualizowałem swój post, aby zawierał dodatkowe informacje. Daj mi znać, jeśli masz dodatkowe pytania.
i31415
16

Próbowałem tego i działa dla mnie w systemie Windows 8.1:

Otwieranie LNKplików w Notatniku:

  • Po prostu przeciągnij i upuść je w oknie Notatnika. Jeśli otworzysz je w Openoknie dialogowym, Notatnik otworzy EXEplik wskazany przez LNKplik.

Otwieranie LNKplików w edytorze szesnastkowym HxD :

  • Otwórz je tak, jak każdy plik za pomocą okna dialogowego Otwórz ( FileOpen)

Otwieranie LNKplików za pomocą wiersza polecenia:

  • Przejdź do folderu zawierającego LNKpliki i wpisz polecenie: TYPE SHORTCUTNAME.LNK

Otwieranie LNKplików w dowolnym programie:

  • Uruchom wiersz polecenia, przejdź do folderu, w którym znajduje się program, użyj polecenia: PROGRAM_NAME.EXE "path to LNK file"
Vinayak
źródło
8

Cały plik .lnk ma na celu traktowanie systemu Windows jako łącza do innego pliku, więc jego edytowanie powinno być trudne!

Być może pomogłoby to, gdybyś opisał DLACZEGO chcesz go edytować. Możesz zmienić ustawienia pliku .lnk, klikając prawym przyciskiem myszy i wybierając Właściwości .

Jeśli naprawdę chcesz go edytować, potrzebujesz specjalnego narzędzia. Istnieje kilka z nich, w tym:

NB: Nie próbowałem żadnego z nich, po prostu googlowałem.

AKTUALIZACJA:

Nie wiem, dlaczego wcześniej o tym nie myślałem, ale możesz edytować właściwości za pomocą PowerShell. Z poprzedniej odpowiedzi na temat przepełnienia stosu :

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

Ponieważ używa to obiektu Shell COM, możesz to zrobić za pomocą WSH, a nawet VBA w pakiecie Office!

Julian Knight
źródło
2
Chcę edytować jego zawartość, najlepiej w edytorze szesnastkowym, ponieważ myślę, że może być uszkodzony i nie ufam Explorer, że poprawnie powie mi o jego zawartości.
Jez
Przypuszczam więc, że odtworzenie go jest już niemożliwe? Jeśli tak, wypróbuj jeden z edytorów, choć nie jestem pewien, co by go zepsuło.
Julian Knight
1
Cóż, nigdy nie było trudno edytować, przynajmniej w Windows XP. W rzeczywistości trudniej było przekonać program, aby traktował go podobnie do dowiązania symbolicznego. Uruchomienie dowolnej aplikacji konsoli, np. editZ argumentem ścieżki do skrótu, otworzy plik skrótu. Programy, które traktują skrót podobnie do dowiązania symbolicznego, parsują go same (być może za pomocą funkcji powłoki). Czy system Windows uciekł się do używania dowiązań symbolicznych wyglądających jak skróty po XP?
Ruslan
Cena postępu! Nie ma sensu posiadanie mechanizmu do definiowania łączy, które następnie ignorowane są przez większość aplikacji. Nie znam wielu powodów, aby bezpośrednio edytować plik .lnk.
Julian Knight
3
@JulianKnight Miałem kiedyś okazję wygenerować je programowo do umieszczenia w folderze, który działał jak indeks. Nie musiałem zakładać żadnych praw do instalowania oprogramowania, ale już korzystaliśmy z VBA. Modyfikacja szablonu .lnk okazała się łatwiejsza niż wygenerowanie go od zera.
Chris H
4

Pliki .LNK są interpretowane przez powłokę. Jeśli otworzysz wiersz polecenia i uruchomisz narzędzie do edycji (powiedzmy na przykład Notatnik), używając pliku .LNK jako argumentu, to powinno ominąć powłokę i otworzyć zawartość samego pliku .LNK.

notepad.exe shortcut.lnk
Wes Sayeed
źródło
Nie, to nie działa. Otwiera plik, który .lnkwskazuje.
Jez
W jakiej aplikacji próbujesz otworzyć link?
Wes Sayeed
3
To jest niepoprawne. Próbowałem tej odpowiedzi i to działa.
Vinayak,
3
@Vayayak To dość odważne stwierdzenie. Może działać dla ciebie w sytuacji, w której go używasz, ale może nie działać dla Jez.
Jon
1

Jeśli używasz CMD do uruchomienia programu z plikiem łącza jako parametrem, parametr ten jest przekazywany dosłownie do programu. To program decyduje, jak obsłużyć łącze.

Przetestowałem to z FRHED , darmowym (i przenośnym) edytorem szesnastkowym: po uruchomieniu go z wiersza poleceń, przekazując link jako parametr, pojawia się monit, czy chcesz otworzyć plik połączony z ( Tak ), samym linkiem ( Nie ) lub Anuluj .

Dziwne, jeśli użyjesz Otwórz w menu Plik FRHED , otwiera plik docelowy bez pytania.

Na XP mam FRHED w moim SendTo menu kontekstowego, a to działa w ten sam sposób jak CMD . Wyobrażam sobie, że Win7 jest podobny (używam systemu Win7 do dedykowanej aplikacji i przeprowadzę na nim proste testy, jak wyżej, ale nie mam kłopotów z jego konfiguracją).

AFH
źródło
1
To nie Windows pyta. To Frhed pyta cię, co robić
Vinayak,
Zupełnie słusznie: głupie z mojej strony - zmienię odpowiedź.
AFH,
Uważam, że umieszczenie Notatnika w moim SendTomenu jest bardzo przydatne, pozwalając mi otwierać dowolny plik (w tym skróty) w Notatniku.
Scott
Uwaga końcowa (?): Każdy program do przeglądania lub edycji oparty na DOS zawsze otworzy łącze, nigdy cel, ponieważ funkcja otwierania pliku DOS nie wie nic o linkach, więc nie robi dla nich żadnej specjalnej obsługi, w przeciwieństwie do otwartego pliku Windows .
AFH
1

Jeśli masz powód, aby często edytować takie pliki, dodaj skrót do notepad.exe do folderu SendTo (w Win 7: C: \ Users \ USER \ AppData \ Roaming \ Microsoft \ Windows \ SendTo). To sprawia, że ​​„Send to notepad.exe” jest dostępny w twoim Rt. Kliknij menu kontekstowe. Plik .ink otworzy się, można go edytować i zapisać w Notatniku.exe.

użytkownik1977596
źródło
0

Pliki .lnk są tylko plikami, dopóki komponent wyższego poziomu, taki jak Explorer.EXE, nie przypisze im maning. Na niższym poziomie (NTFS) nadal mają normalną strukturę, w tym strumień danych. W szczególności cała zawartość znajduje się w foo.lnk::$DATAstrumieniu. Nie wszystkie narzędzia wyższego poziomu rozpoznają tę składnię. Jeśli tylko założą, że to dziwna nazwa pliku i przekażą ją dalej, otrzymają zawartość .lnk.

Np. W wierszu poleceń MORE < foo.lnk::$DATA > conwydrukowałby dane, ale to trochę bełkot (części są binarne)

MSalters
źródło