web-dev-qa-db-fra.com

Comment "persuader" les programmes d'ouvrir un fichier .lnk dans Windows 7?

Un fichier .lnk sous Windows est un fichier réel destiné à être un raccourci vers un autre fichier. Cependant, je souhaite vraiment voir le contenu du fichier .lnk lui-même. Je trouve littéralement impossible de le faire; peu importe ce que j'essaie, mes applications ouvrent le contenu du fichier vers lequel il pointe (glisser/déposer dans l'éditeur de texte ou hexagonal, fichier | ouvert depuis l'éditeur de texte ou hexadécimal, etc. .)

Existe-t-il un moyen de demander à un programme d'ouvrir le fichier .lnk au lieu du fichier vers lequel il pointe?

37
Jez

Ouverture des raccourcis

Pour éditer un raccourci, vous devez évidemment l’ouvrir en premier, ce qui est délicat. Dans certains cas , vous pouvez forcer des programmes à charger des fichiers de raccourci à l'aide d'un argument de ligne de commande:

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

Le chargement du fichier cible ou du fichier de raccourci dépend toutefois du programme. Voici une liste (sans ordre particulier) de certains éditeurs hexagonaux libres qui les prend en charge immédiatement:


Workaround

Si vous ne parvenez pas à charger le contenu d'un fichier de raccourci, vous pouvez ouvrir une commande Invite et renommer le fichier .lnk en une extension différente, non existante, telle que .lne:

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

Si vous avez plusieurs fichiers, vous pouvez également les renommer tous en même temps:

ren *.lnk *.lne

Vous pourrez alors traiter ces raccourcis comme des fichiers normaux. Lorsque vous avez terminé, assurez-vous de les renommer pour restaurer leurs fonctionnalités habituelles.


Information additionnelle

Un raccourci, ou Shell link , contient des informations de métadonnées permettant d’accéder à un lien spécifique cible . Il est analysé et interprété par le shell Windows. De la documentation officielle:

La structure de liens de Shell stocke diverses informations utiles aux utilisateurs finaux, notamment:

  • Un raccourci clavier qui peut être utilisé pour lancer une application.

  • Un commentaire descriptif.

  • Paramètres qui contrôlent le comportement de l'application.

  • Données facultatives stockées dans des sections de données supplémentaires .

Source: [MS-SHLLINK]: Format de fichier binaire Shell Link (.LNK) - Présentation

Les raccourcis sont stockés sous forme de fichiers binaires et ne peuvent pas être modifiés à l'aide d'un éditeur de texte standard. Un fichier .lnk typique ressemble à quelque chose comme ceci en interne:

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

Les vingt premiers octets sont toujours les suivants:

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

Lectures complémentaires

19
and31415

J'ai essayé cela et cela fonctionne pour moi sur Windows 8.1:

Ouverture de fichiers LNK dans le Bloc-notes:

  • Il suffit de les faire glisser dans la fenêtre du Bloc-notes. Si vous les ouvrez à partir de la boîte de dialogue Open, le Bloc-notes ouvrira le fichier EXE pointé par le fichier LNK.

Ouverture de fichiers LNK dans éditeur hexadécimal HxD :

  • Ouvrez-les comme n'importe quel fichier à l'aide de la boîte de dialogue Ouvrir (FileOpen)

Ouverture de fichiers LNK à l’aide de la commande Invite:

  • Accédez au dossier contenant les fichiers LNK et tapez la commande suivante: TYPE SHORTCUTNAME.LNK

Ouverture de fichiers LNK dans n’importe quel programme:

  • Démarrez la commande Invite, naviguez jusqu'au dossier où se trouve le programme, utilisez la commande suivante: PROGRAM_NAME.EXE "path to LNK file"
16
Vinayak

L'intérêt d'un fichier .lnk est que Windows le considère comme un lien vers un autre fichier, de sorte qu'il soit difficile à modifier!

Peut-être que cela vous aiderait si vous décriviez POURQUOI vous voulez l’éditer. Vous pouvez modifier les paramètres d'un fichier .lnk en cliquant avec le bouton droit de la souris et en choisissant Propriétés .

Si vous voulez vraiment l'éditer, vous avez besoin d'un outil spécial. Il en existe quelques-uns, notamment:

NB: Je n'ai essayé aucun de ceux-ci, juste les googler.

METTRE À JOUR:

Je ne sais pas pourquoi je n'y avais pas pensé auparavant, mais vous pouvez modifier les propriétés via PowerShell. De cette réponse précédente sur 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

Comme cela utilise l'objet COM Shell, vous pouvez également le faire avec WSH ou même VBA dans Office!

8
Julian Knight

Les fichiers .LNK sont interprétés par le shell. Si vous ouvrez une invite de commande et appelez votre outil d'édition (disons simplement Notepad par exemple) en utilisant le fichier .LNK comme argument, cela devrait contourner le shell et ouvrir le contenu du fichier .LNK lui-même.

notepad.exe shortcut.lnk
4
Wes Sayeed

Si vous avez des raisons de modifier souvent ces fichiers, ajoutez un raccourci vers notepad.exe dans votre dossier SendTo (Sous Windows 7: C:\Utilisateurs\USER\AppData\Roaming\Microsoft\Windows\SendTo). Cela rend "Envoyer à notepad.exe" disponible à partir de votre RT. Cliquez sur le menu contextuel. Le fichier .ink va s'ouvrir et peut être modifié et enregistré dans notepad.exe.

1
user1977596

Si vous utilisez CMD pour exécuter un programme avec le fichier de liaison en tant que paramètre, ce paramètre est transmis intégralement au programme. C'est au programme de décider comment gérer le lien.

J'ai testé cela avec FRHED, l'éditeur hexadécimal gratuit (et portable): lorsque vous l'exécutez à partir de la ligne de commande, en passant un lien en tant que paramètre , il vous demande si vous souhaitez ouvrir le fichier lié à ( Oui ), le lien lui-même ( Non ) ou Annuler .

Bizarrement, si vous utilisez Ouvrir dans le menu Fichier FRHED, le fichier cible s'ouvre sans rien demander.

Sur XP j'ai FRHED dans mon menu contextuel SendTo , et cela fonctionne de la même manière que CMD. J'imagine que Win7 est similaire (j'utilise un système Win7 pour une application dédiée et je ferai de simples tests dessus, comme ci-dessus, mais je ne plaisante pas avec sa configuration).

1
AFH

Les fichiers .lnk ne sont que des fichiers jusqu'à ce qu'un composant de niveau supérieur, tel que Explorer.EXE, leur affecte une gestion. À un niveau inférieur (NTFS), ils ont toujours une structure normale comprenant un flux de données. En particulier, tout le contenu est dans le flux foo.lnk::$DATA. Tous les outils de niveau supérieur ne reconnaîtront pas cette syntaxe. S'ils supposent simplement qu'il s'agit d'un nom de fichier étrange et le transmettent, ils obtiendront le contenu .lnk.

Par exemple. Sur la ligne de commande, MORE < foo.lnk::$DATA > con afficherait les données, mais c'est un peu du charabia (les parties sont binaires)

0
MSalters