Wie kann ich Programme davon überzeugen, eine aktuelle .lnk-Datei in Windows 7 zu öffnen?

37

Eine .lnkDatei in Windows ist eine tatsächliche Datei, die als Verknüpfung zu einer anderen Datei dienen soll. Ich möchte jedoch wirklich den Inhalt der .lnkDatei selbst anzeigen . Ich finde es buchstäblich unmöglich, dies zu tun; Egal , was ich versuche, meine Anwendungen den Inhalt der Datei öffnet sie verweist auf (Drag / Drop - in Text oder Hex - Editor, Datei | Öffnen von Text oder Hex - Editor, etc.)

Gibt es eine Möglichkeit, einem Programm mitzuteilen, dass es die .lnk-Datei anstelle der Datei, auf die es verweist, öffnen soll ?

Jez
quelle
3
Sie können es jederzeit in .txt oder so umbenennen. Normalerweise führt dies nicht dazu, dass Daten verloren gehen.
Jon
1
@Chipperyman Nur dass das nicht funktioniert. Sie können .lnkDateien mit einer neuen Erweiterung nicht einfach umbenennen .
287352

Antworten:

19

Verknüpfungen öffnen

Um eine Verknüpfung zu bearbeiten, müssen Sie sie natürlich zuerst öffnen, und das erweist sich als schwierig. In einigen Fällen können Sie Programme mit einem Befehlszeilenargument zum Laden von Verknüpfungsdateien zwingen:

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

Ob das Verknüpfungsziel oder die eigentliche Verknüpfungsdatei geladen wird, hängt jedoch vom Programm ab. Hier ist eine Liste (in keiner bestimmten Reihenfolge) einiger kostenloser Hex-Editoren, die sie standardmäßig unterstützen:


Umgehung

Falls Sie nicht in der Lage sind , den Inhalt einer Verknüpfungsdatei zu laden, können Sie eine öffnen Eingabeaufforderung und die umbenennen .lnkDatei in einen anderen, nicht vorhandene Erweiterung wie .lne:

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

Wenn Sie mehrere Dateien haben, können Sie auch alle auf einmal umbenennen:

ren *.lnk *.lne

Sie können diese Verknüpfungen dann wie normale Dateien behandeln. Wenn Sie fertig sind, stellen Sie sicher, dass Sie sie wieder umbenennen, um ihre normale Funktionalität wiederherzustellen.


Zusätzliche Information

Eine Verknüpfung oder ein Shell-Link enthält Metadateninformationen, die für den Zugriff auf ein bestimmtes Linkziel verwendet werden . Es wird von der Windows-Shell analysiert und interpretiert. Aus der offiziellen Dokumentation:

In der Shell-Link-Struktur werden verschiedene Informationen gespeichert, die für Endbenutzer nützlich sind, darunter:

  • Eine Tastenkombination, mit der eine Anwendung gestartet werden kann.

  • Ein beschreibender Kommentar.

  • Einstellungen, die das Anwendungsverhalten steuern.

  • Optionale Daten, die in zusätzlichen Datenabschnitten gespeichert sind .

Quelle: [MS-SHLLINK]: Shell Link (.LNK) Binärdateiformat - Übersicht

Verknüpfungen werden als Binärdateien gespeichert und können nicht mit einem Standard-Texteditor bearbeitet werden. Eine typische .lnkDatei sieht intern ungefähr so ​​aus:

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

Die ersten zwanzig Bytes sind immer die folgenden:

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

Weitere Lektüre

und31415
quelle
Das Öffnen mit HxD über File | Openscheint die .lnkDatei tatsächlich geöffnet zu haben . Vielen Dank.
Jez
@Jez Ich habe meinen Beitrag aktualisiert und einige zusätzliche Informationen hinzugefügt. Lassen Sie mich wissen, wenn Sie weitere Fragen haben.
And31415
16

Ich habe es versucht und es funktioniert für mich unter Windows 8.1:

Öffnen von LNKDateien im Editor:

  • Ziehen Sie sie einfach in das Editor-Fenster und legen Sie sie dort ab. Wenn Sie sie über das OpenDialogfeld öffnen, öffnet Editor die EXEDatei, auf die die LNKDatei verweist.

Öffnen von LNKDateien in HxD Hex - Editor :

  • Öffnen Sie sie wie jede andere Datei im Dialogfeld "Öffnen" ( FileOpen).

Öffnen von LNKDateien der Eingabeaufforderung:

  • Navigieren Sie zu dem Ordner, der die LNKDateien enthält, und geben Sie den folgenden Befehl ein: TYPE SHORTCUTNAME.LNK

Öffnen von LNKDateien in fast jedem Programm:

  • Starten Sie die Eingabeaufforderung, navigieren Sie zu dem Ordner, in dem sich das Programm befindet, und verwenden Sie den folgenden Befehl: PROGRAM_NAME.EXE "path to LNK file"
Vinayak
quelle
8

Der springende Punkt bei einer .lnk-Datei ist, dass Windows sie als Verknüpfung zu einer anderen Datei behandelt, sodass die Bearbeitung schwierig sein sollte !

Vielleicht würde es helfen, wenn Sie beschreiben, WARUM Sie es bearbeiten möchten. Sie können die Einstellungen einer .lnk-Datei ändern, indem Sie mit der rechten Maustaste klicken und Eigenschaften auswählen .

Wenn Sie es wirklich bearbeiten möchten, benötigen Sie ein spezielles Werkzeug. Es gibt einige davon, darunter:

NB: Ich habe keine davon ausprobiert, nur gegoogelt.

AKTUALISIEREN:

Ich weiß nicht, warum ich vorher nicht daran gedacht habe, aber Sie können die Eigenschaften über PowerShell bearbeiten. Aus dieser vorherigen Antwort zum Stapelüberlauf :

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

Da dies das Shell-COM-Objekt verwendet, können Sie dies auch mit WSH oder sogar VBA in Office tun!

Julian Knight
quelle
2
Ich möchte den Inhalt bearbeiten, vorzugsweise in einem Hex-Editor, da ich der Meinung bin, dass er beschädigt ist, und ich vertraue nicht darauf, dass der Explorer mir den Inhalt ordnungsgemäß mitteilt.
Jez
Ich nehme an, dass die Neuerstellung dann draußen ist? Wenn ja, versuchen Sie es mit einem der Editoren, obwohl ich nicht sicher bin, was es beschädigt hätte.
Julian Knight
1
Zumindest unter Windows XP war die Bearbeitung noch nie so schwierig. Es war in der Tat schwieriger, ein Programm davon zu überzeugen, es wie einen Symlink zu behandeln. Wenn Sie eine beliebige Konsolen-App ausführen, z. B. editmit dem Argument Pfad zur Verknüpfung, wird die Verknüpfungsdatei geöffnet. Die Programme, die die Verknüpfung ähnlich wie einen Symlink behandeln, analysieren sie selbst (möglicherweise über Shell-Funktionen). Hat Windows versucht, Symlinks zu verwenden, die nach XP wie Verknüpfungen aussehen?
Ruslan
Der Preis des Fortschritts! Es macht nicht viel Sinn, einen Mechanismus zum Definieren von Links zu haben, den die meisten Apps dann ignorieren. Ich kenne nicht viele Gründe, um .lnks direkt zu bearbeiten.
Julian Knight
3
@JulianKnight Ich hatte einmal eine Verwendung, um sie programmgesteuert für die Platzierung in einem Ordner zu generieren, der als Index fungierte. Ich musste keine Rechte für die Installation von Software übernehmen, aber wir haben bereits VBA verwendet. Das Ändern einer .lnk-Vorlage erwies sich als einfacher als das Generieren einer Vorlage von Grund auf.
Chris H
4

.LNK-Dateien werden von der Shell interpretiert. Wenn Sie eine Eingabeaufforderung öffnen und Ihr Bearbeitungstool (zum Beispiel Notepad) mit der LNK-Datei als Argument aufrufen, sollte dies die Shell umgehen und den Inhalt der LNK-Datei selbst öffnen.

notepad.exe shortcut.lnk
Wes Sayeed
quelle
Nein, das geht nicht. Es öffnet sich die Datei, auf die die .lnkPunkte verweisen.
Jez
In welcher Anwendung möchten Sie den Link öffnen?
Wes Sayeed
3
Das ist falsch. Ich habe diese Antwort ausprobiert und es funktioniert.
Vinayak
3
@ Vinayak Das ist eine ziemlich kühne Aussage. Es kann in der Situation, in der Sie es verwenden, für Sie funktionieren, aber es funktioniert möglicherweise nicht für Jez.
Jon
1

Wenn Sie mit CMD ein Programm mit der Verknüpfungsdatei als Parameter ausführen, wird dieser Parameter wörtlich an das Programm übergeben. Es ist Aufgabe des Programms, zu entscheiden, wie mit dem Link umgegangen wird.

Ich habe dies mit FRHED , dem Freeware (und portablen) Hex-Editor, getestet : Wenn Sie ihn über die Befehlszeile ausführen und einen Link als Parameter übergeben, werden Sie gefragt, ob Sie die mit ( Ja ) verknüpfte Datei öffnen möchten , den Link selbst ( Nein ) oder Abbrechen .

Seltsamerweise öffnet es die Zieldatei , wenn Sie im FRHED- Menü Datei die Option Öffnen verwenden , ohne danach zu fragen.

Unter XP habe ich FRHED in meinem SendTo- Kontextmenü, und das funktioniert genauso wie bei CMD . Ich stelle mir vor, Win7 ist ähnlich (ich verwende ein Win7-System für eine dedizierte Anwendung, und ich werde einfache Tests darauf durchführen, wie oben, aber ich mache keine Probleme mit der Konfiguration).

AFH
quelle
1
Das fordert Sie nicht von Windows auf. Das ist Frhed, der dich fragt, was du tun sollst
Vinayak
Ganz richtig: albern von mir - ich werde meine Antwort ändern.
AFH
Ich finde es sehr nützlich, Notepad in mein SendToMenü aufzunehmen, damit ich alle Dateien (einschließlich Verknüpfungen) in Notepad öffnen kann.
Scott
Letzte Bemerkung (?): Jedes DOS-basierte Ansichts- oder Bearbeitungsprogramm öffnet immer den Link, niemals das Ziel, da die DOS-Funktion zum Öffnen von Dateien nichts über Links weiß und daher keine besondere Behandlung für sie vornimmt, im Gegensatz zur geöffneten Windows-Datei .
AFH
1

Wenn Sie solche Dateien häufig bearbeiten müssen, fügen Sie Ihrem SendTo-Ordner eine Verknüpfung zu notepad.exe hinzu (In Win 7: C: \ Users \ USER \ AppData \ Roaming \ Microsoft \ Windows \ SendTo). Dadurch wird "Send to notepad.exe" von Ihrem RT verfügbar. Klicken Sie auf das Kontextmenü. Die .ink-Datei wird geöffnet und kann bearbeitet und in notepad.exe gespeichert werden.

user1977596
quelle
0

.lnk-Dateien sind nur Dateien, bis sie von einer übergeordneten Komponente wie Explorer.EXE verwaltet werden. Auf einer niedrigeren Ebene (NTFS) haben sie immer noch eine normale Struktur, einschließlich des Datenstroms. Insbesondere ist der gesamte Inhalt im foo.lnk::$DATAStream. Nicht alle übergeordneten Tools erkennen diese Syntax. Wenn sie nur annehmen, dass es sich um einen seltsamen Dateinamen handelt, und ihn weitergeben, erhalten sie den .lnk-Inhalt.

ZB auf der Kommandozeile MORE < foo.lnk::$DATA > conwürde die Daten drucken, aber es ist ein bisschen Kauderwelsch (Teile sind binär)

MSalters
quelle