¿Cómo puedo "persuadir" a los programas para que abran un archivo .lnk real en Windows 7?

37

Un .lnkarchivo en Windows es un archivo real destinado a ser un acceso directo a otro archivo. Sin embargo, realmente quiero ver el contenido en el .lnkarchivo en sí. Me resulta literalmente imposible hacerlo; no importa lo que intente, mis aplicaciones están abriendo el contenido del archivo al que apunta (arrastrar / soltar en el editor de texto o hexadecimal, archivo | abrir desde el editor de texto o hexadecimal, etc.)

¿Hay alguna manera de decirle a un programa que realmente abra el archivo .lnk en lugar del archivo al que apunta?

Jez
fuente
3
Siempre puede cambiarle el nombre a .txt o algo así. Por lo general, esto no hace que pierda ningún dato.
Jon
1
@Chipperyman Excepto que eso no funciona. No puede cambiar fácilmente el nombre de los .lnkarchivos con una nueva extensión.
287352

Respuestas:

19

Atajos de apertura

Para editar un acceso directo, obviamente debe abrirlo primero, y eso resulta ser complicado. En algunos casos, puede forzar a los programas a cargar archivos de acceso directo utilizando un argumento de línea de comandos:

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

Sin embargo, si el destino del enlace o el archivo de acceso directo real está cargado depende del programa. Aquí hay una lista (sin ningún orden en particular) de algunos editores hexadecimales gratuitos que los admite de forma inmediata:


Solución alternativa

En caso de que no pueda cargar el contenido de un archivo de acceso directo, puede abrir un símbolo del sistema y cambiar el nombre del .lnkarchivo a una extensión diferente e inexistente, como .lne:

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

Si tiene varios archivos, también puede cambiarles el nombre a todos a la vez:

ren *.lnk *.lne

Entonces podrá tratar esos accesos directos como archivos normales. Cuando haya terminado, asegúrese de cambiarles el nombre para restaurar su funcionalidad habitual.


Información Adicional

Un acceso directo, o enlace de shell , contiene información de metadatos utilizada para acceder a un objetivo de enlace específico . Es analizado e interpretado por el shell de Windows. De la documentación oficial:

La estructura de enlace de shell almacena diversa información que es útil para los usuarios finales, que incluye:

  • Un atajo de teclado que se puede usar para iniciar una aplicación.

  • Un comentario descriptivo.

  • Configuraciones que controlan el comportamiento de la aplicación.

  • Datos opcionales almacenados en secciones de datos adicionales .

Fuente: [MS-SHLLINK]: Formato de archivo binario Shell Link (.LNK) - Descripción general

Los accesos directos se almacenan como archivos binarios y no se pueden editar con un editor de texto estándar. Un .lnkarchivo típico se parece a esto 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   .Ê..š..........

Los primeros veinte bytes son siempre los siguientes:

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

Otras lecturas

y31415
fuente
El uso de HxD para abrirlo en File | Openrealidad parece haber abierto el .lnkarchivo. Gracias.
Jez
@Jez He actualizado mi publicación para incluir información adicional. Avísame si tienes más preguntas.
y31415
16

He intentado esto y me funciona en Windows 8.1:

Abrir LNKarchivos en el Bloc de notas:

  • Simplemente arrástrelos y suéltelos en la ventana del Bloc de notas. Si los abre desde el Opencuadro de diálogo, el Bloc de notas abrirá el EXEarchivo señalado por el LNKarchivo.

Abrir LNKarchivos en el editor hexadecimal HxD :

  • Ábralos como lo haría con cualquier archivo usando el cuadro de diálogo Abrir ( FileOpen)

Abrir LNKarchivos con el símbolo del sistema:

  • Navegue a la carpeta que contiene los LNKarchivos y escriba el comando: TYPE SHORTCUTNAME.LNK

Abrir LNKarchivos en casi cualquier programa:

  • Inicie el símbolo del sistema, navegue a la carpeta donde se encuentra el programa, use el comando: PROGRAM_NAME.EXE "path to LNK file"
Vinayak
fuente
8

¡El objetivo de un archivo .lnk es que Windows lo trate como un enlace a otro archivo, por lo que debería ser difícil de editar!

Quizás ayudaría si describiera POR QUÉ desea editarlo. Puede cambiar la configuración de un archivo .lnk haciendo clic derecho y seleccionando Propiedades .

Si realmente quieres editarlo, necesitas una herramienta especial. Hay algunos de estos, que incluyen:

NB: No he probado ninguno de estos, solo los busqué en Google.

ACTUALIZAR:

No sé por qué no pensé en esto antes, pero puedes editar las propiedades a través de PowerShell. De esta respuesta anterior en 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

Como esto usa el objeto COM de Shell, ¡también podría hacerlo con WSH o incluso VBA en Office!

Julian Knight
fuente
2
Quiero editar su contenido, preferiblemente en un editor hexadecimal, porque creo que podría estar dañado y no confío en que Explorer me diga correctamente su contenido.
Jez
¿Supongo que recrearlo está fuera entonces? Si es así, pruebe uno de los editores, aunque no estoy seguro de qué lo habría dañado.
Julian Knight
1
Bueno, nunca ha sido difícil de editar, al menos en Windows XP. De hecho, fue más difícil convencer a un programa para que lo tratara de manera similar a un enlace simbólico. Al ejecutar cualquier aplicación de consola, por ejemplo edit, con el argumento de ruta al acceso directo, se abrirá el archivo de acceso directo. Los programas que tratan el acceso directo de manera similar a un enlace simbólico lo analizan ellos mismos (tal vez a través de funciones de shell). ¿Windows ha recurrido al uso de enlaces simbólicos que parecen atajos después de XP?
Ruslan
El precio del progreso! No tiene mucho sentido tener un mecanismo para definir enlaces que la mayoría de las aplicaciones ignoran. No sé de muchas razones para tener que editar .lnk's directamente.
Julian Knight
3
@JulianKnight Utilicé una vez para generarlos mediante programación para colocarlos en una carpeta que actuaba como índice. Tuve que asumir que no tenía derechos para instalar el software, pero ya estábamos usando VBA. Modificar una plantilla .lnk resultó más fácil que generar una desde cero.
Chris H
4

Los archivos .LNK son interpretados por el shell. Si abre un símbolo del sistema e invoca su herramienta de edición (digamos, por ejemplo, el Bloc de notas) usando el archivo .LNK como argumento, eso debería omitir el shell y abrir el contenido del archivo .LNK.

notepad.exe shortcut.lnk
Wes Sayeed
fuente
No, eso no funciona. Abre el archivo al que .lnkapuntan.
Jez
¿En qué aplicación estás intentando abrir el enlace?
Wes Sayeed
3
Eso es incorrecto. He intentado esta respuesta y funciona.
Vinayak
3
@Vinayak Esa es una declaración bastante audaz. Puede funcionar para usted en la situación en la que lo está utilizando, pero podría no funcionar para Jez.
Jon
1

Si utiliza CMD para ejecutar un programa con el archivo de enlace como parámetro, ese parámetro se pasa literalmente al programa. Depende del programa decidir cómo manejar el enlace.

He probado esto con FRHED , el editor hexadecimal gratuito (y portátil): cuando lo ejecuta desde la línea de comando, pasando un enlace como parámetro, le pregunta si desea abrir el archivo vinculado a ( ), el enlace en sí ( No ) o Cancelar .

Curiosamente, si usa Abrir en el menú Archivo FRHED , abre el archivo de destino sin preguntar.

En XP He Frhed en mi SendTo menú contextual, y que funciona de la misma manera que el CMD . Me imagino que Win7 es similar (uso un sistema Win7 para una aplicación dedicada, y haré pruebas simples en él, como se indicó anteriormente, pero no me meto con su configuración).

AFH
fuente
1
Eso no es lo que Windows te está pidiendo. Eso es Frhed preguntándote qué hacer
Vinayak
Muy bien: tonto de mi parte. Cambiaré mi respuesta.
AFH
Creo que poner el Bloc de notas en mi SendTomenú es muy útil, ya que me permite abrir cualquier archivo (incluidos los accesos directos) en el Bloc de notas.
Scott
Observación final (?): Cualquier programa de edición o vista basado en DOS siempre abrirá el enlace, nunca el objetivo, ya que la función de abrir el archivo de DOS no sabe nada sobre los enlaces, por lo que no hace un manejo especial para ellos, a diferencia del archivo de Windows abierto .
AFH
1

Si tiene motivos para editar dichos archivos con frecuencia, agregue un acceso directo a notepad.exe a su carpeta SendTo (en Win 7: C: \ Users \ USER \ AppData \ Roaming \ Microsoft \ Windows \ SendTo). Esto hace que "Enviar a notepad.exe" esté disponible desde su Rt. Haga clic en el menú contextual. El archivo .ink se abrirá, se puede editar y guardar en notepad.exe.

usuario1977596
fuente
0

Los archivos .lnk son solo archivos hasta que un componente de nivel superior, como Explorer.EXE, les asigna un manejo. En un nivel inferior (NTFS), todavía tienen una estructura normal que incluye flujo de datos. En particular, todo el contenido está en la foo.lnk::$DATAsecuencia. No todas las herramientas de nivel superior reconocerán esa sintaxis. Si simplemente asumen que es un nombre de archivo extraño y lo pasan, obtendrán el contenido .lnk.

Por ejemplo, en la línea de comando MORE < foo.lnk::$DATA > conse imprimirían los datos, pero es un poco tonto (las partes son binarias)

MSalters
fuente