Como faço para “persuadir” programas a abrir um arquivo .lnk real no Windows 7?

34

Um arquivo .lnk no Windows é um arquivo real destinado a ser um atalho para outro arquivo. No entanto, eu realmente quero ver o conteúdo no arquivo .lnk em si. Eu estou achando que é literalmente impossível fazê-lo; não importa o que eu tente, meus aplicativos estão abrindo o conteúdo do arquivo que ele aponta para (arrastar / soltar em texto ou editor hexadecimal, arquivo | aberto de texto ou editor hexadecimal, etc.)

Existe alguma maneira de dizer a um programa para realmente abrir o arquivo .lnk em vez do arquivo para o qual ele aponta?

    
por Jez 09.06.2014 / 22:08

7 respostas

18

Abrindo atalhos

Para editar um atalho, você obviamente precisa abri-lo primeiro, e isso é complicado. Em alguns casos, você pode forçar programas a carregar arquivos de atalho usando um argumento de linha de comando:

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

Se o destino do link ou o arquivo de atalho real é carregado depende do programa, no entanto. Aqui está uma lista (em nenhuma ordem particular) de alguns editores hexadecimais gratuitos que os suporta fora da caixa:

Solução alternativa

Caso não seja possível carregar o conteúdo de um arquivo de atalho, você poderá abrir um prompt de comando e renomeie o arquivo .lnk para uma extensão diferente e inexistente como .lne :

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

Se você tiver vários arquivos, também poderá renomear todos eles de uma só vez:

ren *.lnk *.lne

Você então poderá tratar esses atalhos como arquivos comuns. Quando terminar, certifique-se de renomeá-los para restaurar sua funcionalidade habitual.

Informações adicionais

Um atalho, ou link da shell , contém metadados informações usadas para acessar uma meta de link específica. É analisado e interpretado pelo shell do Windows. Da documentação oficial:

The shell link structure stores various information that is useful to end users, including:

  • A keyboard shortcut that can be used to launch an application.

  • A descriptive comment.

  • Settings that control application behavior.

  • Optional data stored in extra data sections.

Source: [MS-SHLLINK]: Shell Link (.LNK) Binary File Format - Overview

Os atalhos são armazenados como arquivos binários e não podem ser editados usando um editor de texto padrão. Um típico arquivo .lnk é parecido com isso 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   .Ê..š..........

Os primeiros vinte bytes são sempre os seguintes:

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

Leitura adicional

por 10.06.2014 / 00:50
16

Eu tentei isso e funciona para mim no Windows 8.1:

Abrindo LNK arquivos no bloco de notas:

  • Basta arrastar e soltá-los na janela do Bloco de Notas. Se você abri-los a partir do diálogo Open , o Bloco de Notas abrirá o arquivo EXE apontado pelo arquivo LNK .

Abrindo LNK arquivos no editor hexadecimal HxD :

  • Abra-os como faria com qualquer arquivo usando a caixa de diálogo Abrir ( FileOpen )

Abrindo LNK arquivos usando o prompt de comando:

  • Navegue até a pasta que contém os arquivos LNK e digite o comando: %código%

Abrindo arquivos TYPE SHORTCUTNAME.LNK em praticamente qualquer programa:

  • Inicie o prompt de comando, navegue até a pasta onde o programa está localizado, use o comando: LNK
por 10.06.2014 / 00:48
8

O ponto principal de um arquivo .lnk é que o Windows o trate como um link para outro arquivo, então deve ser difícil de editar!

Talvez seja útil se você descreveu por que deseja editá-lo. Você pode alterar as configurações de um arquivo .lnk clicando com o botão direito do mouse e escolhendo Propriedades .

Se você realmente quiser editá-lo, precisa de uma ferramenta especial. Existem alguns deles, incluindo:

NB: Eu não tentei nada disso, apenas pesquisei no Google.

ATUALIZAÇÃO:

Não sei porque não pensei nisso antes, mas você pode editar as propriedades por meio do PowerShell. De esta resposta anterior no 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 isso usa o objeto COM do Shell, você também pode fazer isso com o WSH ou mesmo o VBA no Office!

    
por 09.06.2014 / 22:28
4

Arquivos .LNK são interpretados pelo shell. Se você abrir um prompt de comando e invocar sua ferramenta de edição (vamos apenas dizer o Bloco de Notas, por exemplo) usando o arquivo .LNK como um argumento, isso deve ignorar o shell e abrir o conteúdo do arquivo .LNK em si.

notepad.exe shortcut.lnk
    
por 09.06.2014 / 23:10
1

Se você usar o CMD para executar um programa com o arquivo de link como um parâmetro, esse parâmetro será transmitido integralmente ao programa. Cabe ao programa decidir como lidar com o link.

Eu testei isso com FRHED , o editor hexadecimal freeware (e portátil): quando você o executa a partir da linha de comando, passando um link como parâmetro, ele pergunta se você deseja abrir o arquivo ligado a ( Sim ), o próprio link ( Não ), ou Cancelar .

Curiosamente, se você usar o Open no menu FRHED File, ele abrirá o arquivo de destino sem perguntar.

No XP, tenho FRHED no meu menu de contexto SendTo , e isso funciona da mesma forma que CMD . Eu imagino que o Win7 é similar (eu uso um sistema Win7 para um aplicativo dedicado, e farei testes simples nele, como acima, mas eu não mexo com sua configuração).

    
por 09.06.2014 / 23:38
1

Se você tiver motivos para editar esses arquivos com freqüência, adicione um atalho ao notepad.exe à sua pasta SendTo (Em Win 7: C: \ Usuários \ USER \ AppData \ Roaming \ Microsoft \ Windows \ SendTo). Isso faz com que "Enviar para notepad.exe" disponível a partir do seu Rt. Clique no menu de contexto. O arquivo .ink será aberto e poderá ser editado e salvo no notepad.exe.

    
por 11.06.2014 / 15:07
0

Os arquivos .lnk são apenas arquivos até que um componente de nível mais alto, como o Explorer.EXE, atribua uma classe a eles. Em um nível inferior (NTFS), eles ainda têm uma estrutura normal, incluindo fluxo de dados. Em particular, todo o conteúdo está no fluxo foo.lnk::$DATA . Nem todas as ferramentas de nível superior reconhecerão essa sintaxe. Se eles apenas assumirem que é um nome de arquivo estranho e passá-lo, eles obterão o conteúdo .lnk.

Por exemplo na linha de comando MORE < foo.lnk::$DATA > con iria imprimir os dados, mas é um pouco sem sentido (partes são binárias)

    
por 10.06.2014 / 23:08