Come "persuadere" i programmi ad aprire un file .lnk effettivo in Windows 7?


37

Un .lnkfile in Windows è un file reale destinato ad essere un collegamento a un altro file. Tuttavia, voglio davvero vedere il contenuto del .lnkfile stesso. Sto trovando letteralmente impossibile farlo; indipendentemente da ciò che provo, le mie applicazioni stanno aprendo il contenuto del file a cui punta (trascina / rilascia in editor di testo o hex, file | apri da editor di testo o hex, ecc.)

C'è un modo in cui posso dire a un programma di aprire effettivamente il file .lnk invece del file a cui punta?


3
Puoi sempre rinominarlo in .txt o qualcosa del genere. Di solito ciò non causa la perdita di dati.
Jon,

1
@Chipperyman Tranne che non funziona. Non è possibile rinominare facilmente i .lnkfile con una nuova estensione.
287352

Risposte:


19

Scorciatoie di apertura

Per modificare una scorciatoia devi ovviamente aprirla prima, e questo si rivela difficile. In alcuni casi è possibile forzare i programmi a caricare file di scelta rapida utilizzando un argomento della riga di comando:

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

Tuttavia, se la destinazione del collegamento o il file di collegamento effettivo viene caricato dipende dal programma. Ecco un elenco (in nessun ordine particolare) di alcuni editor esadecimali gratuiti che li supporta immediatamente:


Soluzione

Nel caso in cui non sia possibile caricare il contenuto di un file di collegamento, è possibile aprire un prompt dei comandi e rinominare il .lnkfile in un'estensione diversa, inesistente come .lne:

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

Se disponi di più file, puoi anche rinominarli tutti contemporaneamente:

ren *.lnk *.lne

Sarai quindi in grado di trattare queste scorciatoie come normali file. Al termine, assicurati di rinominarli per ripristinare la loro normale funzionalità.


Informazioni aggiuntive

Un collegamento, o collegamento shell , contiene informazioni sui metadati utilizzate per accedere a una destinazione collegamento specifica . È analizzato e interpretato dalla shell di Windows. Dalla documentazione ufficiale:

La struttura dei collegamenti della shell memorizza varie informazioni utili agli utenti finali, tra cui:

  • Una scorciatoia da tastiera che può essere utilizzata per avviare un'applicazione.

  • Un commento descrittivo.

  • Impostazioni che controllano il comportamento dell'applicazione.

  • Dati opzionali memorizzati in sezioni di dati extra .

Fonte: [MS-SHLLINK]: Formato file binario Shell Link (.LNK) - Panoramica

I collegamenti sono memorizzati come file binari e non possono essere modificati utilizzando un editor di testo standard. Un .lnkfile tipico è simile a questo internamente:

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

I primi venti byte sono sempre i seguenti:

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

Ulteriori letture


L'uso di HxD per aprirlo tramite in File | Openrealtà sembra aver aperto il .lnkfile. Grazie.
Jez,

@Jez Ho aggiornato il mio post per includere alcune informazioni extra. Fammi sapere se hai altre domande.
and31415

16

Ho provato questo e funziona per me su Windows 8.1:

Apertura di LNKfile in Blocco note:

  • Basta trascinarli nella finestra di Blocco note. Se li apri dalla Openfinestra di dialogo, Blocco note aprirà il EXEfile a cui punta il LNKfile.

Apertura di LNKfile nell'editor esadecimale HxD :

  • Aprili come faresti con qualsiasi file usando la finestra di dialogo Apri ( FileOpen)

Apertura di LNKfile tramite il prompt dei comandi:

  • Passare alla cartella contenente i LNKfile e digitare il comando: TYPE SHORTCUTNAME.LNK

Apertura di LNKfile in quasi tutti i programmi:

  • Avviare il prompt dei comandi, accedere alla cartella in cui si trova il programma, utilizzare il comando: PROGRAM_NAME.EXE "path to LNK file"

8

L'intero punto di un file .lnk è che Windows lo tratti come un collegamento a un altro file, quindi dovrebbe essere difficile da modificare!

Forse sarebbe d'aiuto se descrivessi PERCHÉ vuoi modificarlo. È possibile modificare le impostazioni di un file .lnk facendo clic con il pulsante destro del mouse e selezionando Proprietà .

Se vuoi davvero modificarlo, hai bisogno di uno strumento speciale. Ce ne sono alcuni tra cui:

NB: Non ho provato nessuno di questi, li ho solo cercati su Google.

AGGIORNARE:

Non so perché non ci avevo pensato prima, ma puoi modificare le proprietà tramite PowerShell. Da questa precedente risposta su Stack Overflow :

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

Poiché utilizza l'oggetto COM Shell, è possibile farlo anche con WSH o persino VBA in Office!


2
Voglio modificarne il contenuto, preferibilmente in un editor esadecimale, perché penso che potrebbe essere corrotto e non mi fido di Explorer che mi dica correttamente il suo contenuto.
Jez,

Suppongo che ricrearlo sia fuori allora? In tal caso, prova uno dei redattori anche se non sono sicuro di cosa lo avrebbe corrotto.
Julian Knight,

1
Bene, non è mai stato difficile modificarlo, almeno in Windows XP. In effetti era più difficile convincere un programma a trattarlo in modo simile a un collegamento simbolico. L'esecuzione di qualsiasi app console, ad esempio edit, con l'argomento del percorso del collegamento aprirà il file di collegamento. I programmi che trattano il collegamento in modo simile a un collegamento simbolico lo analizzano da soli (forse tramite funzioni di shell). Windows ha fatto ricorso all'utilizzo dei collegamenti simbolici come scorciatoie dopo XP?
Ruslan,

Il prezzo del progresso! Non ha molto senso avere un meccanismo per definire i collegamenti che la maggior parte delle app ignora. Non conosco molti motivi per cui è necessario modificare direttamente .lnk.
Julian Knight,

3
@JulianKnight Una volta ho avuto modo di generarli a livello di codice per il posizionamento in una cartella che fungeva da indice. Non dovevo assumere alcun diritto per installare il software, ma stavamo già utilizzando VBA. La modifica di un modello .lnk si è dimostrata più semplice che generarne uno da zero.
Chris H,

4

I file .LNK sono interpretati dalla shell. Se si apre un prompt dei comandi e si richiama lo strumento di modifica (per esempio diciamo Blocco note) usando il file .LNK come argomento, questo dovrebbe bypassare la shell e aprire il contenuto del file .LNK stesso.

notepad.exe shortcut.lnk

No, non funziona. Apre il file a cui .lnkpunta.
Jez,

In quale applicazione stai cercando di aprire il collegamento?
Wes Sayeed,

3
Questo non è corretto Ho provato questa risposta e funziona.
Vinayak,

3
@Vinayak È un'affermazione piuttosto audace. Potrebbe funzionare per te nella situazione in cui lo stai usando, ma potrebbe non funzionare per Jez.
Jon,

1

Se si utilizza CMD per eseguire un programma con il file di collegamento come parametro, quel parametro viene passato letteralmente al programma. Spetta al programma decidere come gestire il collegamento.

L'ho provato con FRHED , l'editor esadecimale freeware (e portatile): quando lo esegui dalla riga di comando, passando un collegamento come parametro, ti viene chiesto se vuoi aprire il file collegato a ( ), il collegamento stesso ( No ) o Annulla .

Stranamente, se si utilizza Apri nel menu File FRHED , si apre il file di destinazione senza chiedere.

Su XP ho FRHED nel mio menu contestuale SendTo e funziona allo stesso modo di CMD . Immagino che Win7 sia simile (uso un sistema Win7 per un'applicazione dedicata e farò dei semplici test su di esso, come sopra, ma non scherzo con la sua configurazione).


1
Questo non è Windows che ti chiede. È Frhed che ti chiede cosa fare
Vinayak,

Esatto: sciocco da parte mia - cambierò la mia risposta.
AFH,

Trovo che mettere Notepad nel mio SendTomenu sia molto utile, permettendomi di aprire qualsiasi file (compresi i collegamenti) in Notepad.
Scott,

Osservazione finale (?): Qualsiasi vista basata su DOS o programma di modifica aprirà sempre il collegamento, mai la destinazione, poiché la funzione di apertura del file DOS non conosce nulla sui collegamenti, quindi non esegue alcuna gestione speciale per loro, a differenza del file di Windows aperto .
AFH,

1

Se hai motivo di modificare spesso tali file, aggiungi un collegamento a notepad.exe nella cartella SendTo (in Win 7: C: \ Users \ USER \ AppData \ Roaming \ Microsoft \ Windows \ SendTo). Questo rende "Invia a notepad.exe" disponibile dal tuo RT. Fai clic sul menu contestuale. Il file .ink si aprirà e potrà essere modificato e salvato in notepad.exe.


0

I file .lnk sono solo file fino a quando un componente di livello superiore come Explorer.EXE non assegna loro una gestione. A un livello inferiore (NTFS), hanno ancora una struttura normale incluso il flusso di dati. In particolare, l'intero contenuto è nello foo.lnk::$DATAstream. Non tutti gli strumenti di livello superiore riconosceranno quella sintassi. Se assumono semplicemente che sia un nome file strano e lo trasmettano, otterranno i contenuti .lnk.

Ad esempio sulla riga di comando MORE < foo.lnk::$DATA > constamperebbe i dati, ma è un po 'incomprensibile (le parti sono binarie)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.