¿Cómo vuelco información desde un acceso directo de Windows *.lnk en Linux?

¿Cómo vuelco información desde un acceso directo de Windows *.lnk en Linux?

Para iniciar el acceso directo de Windows lnk en Linux, se puede utilizar wine start qqq.lnk.

¿Pero puedo ver la información (línea de comando, directorio actual) al respecto? stringsno es suficiente.

Respuesta1

Parece que no hay muchos programas para hacer esto... Encontré dos scripts en Perl que funcionan.

lslnk.plyanálisis de lnk

Úsalos así:<whicheverscript> Name.lnk

Respuesta2

Puedes utilizar la lnkinfoherramienta deliblnk( liblnk-utilspaquete en Debian):

lnkinfo <file.lnk>

Uso de ejemplo en scripts:

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

Salida de ejemplo:

$ 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

Respuesta3

La pregunta no dice que estés usando cygwin, pero si es así, sugeriría leer el acceso directo que viene con el paquete Cygutils.

Nota: Encontré algunos atajos que no se muestran, por lo que también sugiero la fuerza bruta.

cuerdas -el

o incluso

volcado hexadecimal -c

LECTURASHORTCUT(1) Cygutils
LECTURASHORTCUT(1)

NOMBRE readshortcut: lee datos de un archivo de acceso directo de Windows (.lnk)

SINOPSIS readshortcut [OPCIÓN]* ATAJO

DESCRIPCIÓN readshortcut es una herramienta de línea de comandos para leer archivos de acceso directo de Windows (también conocidos como enlaces OLE). El uso más práctico es resolver el objetivo al que apunta un atajo. Se puede ejecutar fácilmente desde un script o un archivo por lotes para uso no interactivo.

información relacionada