Wie speichere ich Informationen von einer Windows *.lnk-Verknüpfung unter Linux?

Wie speichere ich Informationen von einer Windows *.lnk-Verknüpfung unter Linux?

Um die Windows-LNK-Verknüpfung unter Linux zu starten, kann man verwenden wine start qqq.lnk.

Aber die Anzeige der Informationen (Kommandozeile, aktuelles Verzeichnis) dazu stringsreicht nicht aus.

Antwort1

Es scheint, dass es nicht viele Programme dafür gibt ... Ich habe zwei Perl-Skripte gefunden, die einigermaßen funktionieren.

lslnk.plUndlnk-Analyse

Verwenden Sie sie wie folgt:<whicheverscript> Name.lnk

Antwort2

Sie können das lnkinfoTool von verwendenliblnk( liblnk-utilsPaket in Debian):

lnkinfo <file.lnk>

Beispielverwendung in Skripten:

LOCAL_PATH=$(lnkinfo "$1" | grep 'Local path' | cut -d':' -f2-)
ARGS=$(lnkinfo "$1" | grep 'Command line arguments' | cut -d':' -f2-)

Beispielausgabe:

$ lnkinfo 'Program Files - Shortcut.lnk'
lnkinfo 20171101

Windows Shortcut information:
        Contains a link target identifier
        Contains a relative path string

Link information:
        Creation time           : Jul 14, 2009 03:20:08.555426400 UTC
        Modification time       : Apr 23, 2019 21:36:46.017274100 UTC
        Access time         : Apr 23, 2019 21:36:46.017274100 UTC
        File size           : 12288 bytes
        Icon index          : 0
        Show Window value       : 0x00003000
        Hot Key value           : 12288
        File attribute flags        : 0x00000011
                Is read-only (FILE_ATTRIBUTE_READ_ONLY)
                Is directory (FILE_ATTRIBUTE_DIRECTORY)
        Drive type          : Fixed (3)
        Drive serial number     : 0x0e1909c6
        Volume label            : Local Disk
        Local path          : C:\Program Files
        Relative path           : ..\..\..\Program Files

Link target identifier:
        Shell item list
                Number of items     : 3

        Shell item: 1
                Item type       : Root folder
                Class type indicator    : 0x1f (Root folder)
                Shell folder identifier : 20d04fe0-3aea-1069-a2d8-08002b30309d
                Shell folder name   : My Computer

        Shell item: 2
                Item type       : Volume
                Class type indicator    : 0x2f (Volume)
                Volume name     : C:\

        Shell item: 3
                Item type       : File entry
                Class type indicator    : 0x31 (File entry: Directory)
                Name            : PROGRA~1
                Modification time   : Apr 23, 2019 21:36:48
                File attribute flags    : 0x00000011
                        Is read-only (FILE_ATTRIBUTE_READ_ONLY)
                        Is directory (FILE_ATTRIBUTE_DIRECTORY)
        Extension block: 1
                Signature       : 0xbeef0004 (File entry extension)
                Long name       : Program Files
                Localized name      : @shell32.dll,-21781
                Creation time       : Jul 14, 2009 03:20:10
                Access time     : Apr 23, 2019 21:36:48
                NTFS file reference : MFT entry: 878, sequence: 1



Distributed link tracking data:
        Machine identifier      : <snip>
        Droid volume identifier     : b2638d5e-f5b8-480c-bda0-fdb25ab91131
        Droid file identifier       : 968b84a2-a646-11e9-a124-0021cc6948e3
        Birth droid volume identifier   : b2638d5e-f5b8-480c-bda0-fdb25ab91131
        Birth droid file identifier : 968b84a2-a646-11e9-a124-0021cc6948e3

Antwort3

In der Frage steht nicht, dass Sie Cygwin verwenden, aber wenn ja, würde ich Readshortcut vorschlagen, das im Cygutils-Paket enthalten ist

Hinweis: Ich habe einige Verknüpfungen gefunden, die nicht angezeigt werden, daher empfehle ich auch die Brute-Force-Methode

Zeichenfolgen -el

oder auch

hexdump -c

READSHORTCUT(1) Cygutils
READSHORTCUT(1)

NAME readshortcut - Daten aus einer Windows-Verknüpfungsdatei (.lnk) lesen

ÜBERSICHT readshortcut [OPTION]* TASTE

BESCHREIBUNG readshortcut ist ein Befehlszeilentool zum Lesen von Windows-Verknüpfungsdateien (auch als OLE-Links bekannt). Die praktischste Verwendung besteht darin, das Ziel aufzulösen, auf das eine Verknüpfung verweist. Es kann für die nicht-interaktive Verwendung einfach aus einem Skript oder einer Batchdatei ausgeführt werden.

verwandte Informationen