Como persuadir os programas a abrir um arquivo .lnk real no Windows 7?

37

Um .lnkarquivo no Windows é um arquivo real destinado a ser um atalho para outro arquivo. No entanto, eu realmente quero ver o conteúdo do .lnkpróprio arquivo. Estou achando literalmente impossível fazê-lo; não importa o que eu tente, meus aplicativos estão abrindo o conteúdo do arquivo para o qual ele aponta (arraste / solte no editor de texto ou hexadecimal, arquivo | abra no editor de texto ou 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?

Jez
fonte
3
Você sempre pode renomeá-lo para .txt ou algo assim. Normalmente, isso não causa perda de dados.
Jon
1
@Chipperyman Exceto que isso não funciona. Você não pode renomear .lnkarquivos facilmente com uma nova extensão.
287352

Respostas:

19

Abrindo atalhos

Para editar um atalho, obviamente, é necessário abri-lo primeiro, e isso prova ser complicado. Em alguns casos, você pode forçar os 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. Aqui está uma lista (em nenhuma ordem específica) de alguns editores hexadecimais gratuitos que os suportam imediatamente:


Solução alternativa

Caso você não consiga carregar o conteúdo de um arquivo de atalho, abra um prompt de comando e renomeie o .lnkarquivo 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 vez:

ren *.lnk *.lne

Você poderá tratar esses atalhos como arquivos comuns. Ao terminar, renomeie-os novamente para restaurar a funcionalidade usual.


Informação adicional

Um atalho ou link de shell contém informações de metadados usadas para acessar um destino de link específico . É analisado e interpretado pelo shell do Windows. A partir da documentação oficial:

A estrutura do link do shell armazena várias informações que são úteis para os usuários finais, incluindo:

  • Um atalho de teclado que pode ser usado para iniciar um aplicativo.

  • Um comentário descritivo.

  • Configurações que controlam o comportamento do aplicativo.

  • Dados opcionais armazenados em seções de dados extras .

Fonte: [MS-SHLLINK]: Formato de arquivo binário do Link do Shell (.LNK) - Visão geral

Os atalhos são armazenados como arquivos binários e não podem ser editados usando um editor de texto padrão. Um .lnkarquivo típico se parece 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

and31415
fonte
Usar o HxD para abri-lo via File | Openrealmente parece ter aberto o .lnkarquivo. Obrigado.
Jez
@Jez Atualizei meu post para incluir algumas informações extras. Entre em contato se tiver mais alguma dúvida.
and31415
16

Eu tentei isso e funciona para mim no Windows 8.1:

Abrindo LNKarquivos no bloco de notas:

  • Basta arrastar e soltar na janela do bloco de notas. Se você os abrir na Opencaixa de diálogo, o Bloco de Notas abrirá o EXEarquivo apontado pelo LNKarquivo.

Abrindo LNKarquivos no editor hexadecimal HxD :

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

Abrindo LNKarquivos usando o prompt de comando:

  • Navegue até a pasta que contém os LNKarquivos e digite o comando: TYPE SHORTCUTNAME.LNK

Abrindo LNKarquivos em praticamente qualquer programa:

  • Inicie o prompt de comando, navegue até a pasta em que o programa está localizado, use o comando: PROGRAM_NAME.EXE "path to LNK file"
Vinayak
fonte
8

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

Talvez ajude 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 deseja editá-lo, precisa de uma ferramenta especial. Existem alguns deles, incluindo:

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

ATUALIZAR:

Não sei por que não pensei nisso antes, mas você pode editar as propriedades via PowerShell. A partir desta 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 Shell COM, você também pode fazer isso com o WSH ou mesmo o VBA no Office!

Julian Knight
fonte
2
Quero editar seu conteúdo, de preferência em um editor hexadecimal, porque acho que ele pode estar corrompido e não confio no Explorer para me informar adequadamente seu conteúdo.
Jez
Suponho que recriá-lo está fora então? Nesse caso, tente um dos editores, mas não tenho certeza do que o teria corrompido.
Julian Knight
1
Bem, nunca foi difícil editar, pelo menos no Windows XP. Na verdade, era mais difícil convencer um programa a tratá-lo de maneira semelhante a um link simbólico. A execução de qualquer aplicativo de console, por exemplo edit, com o argumento de caminho para o atalho abrirá o arquivo de atalho. Os programas que tratam o atalho de maneira semelhante a um link simbólico analisam eles mesmos (talvez por meio de funções shell). O Windows recorreu ao uso de links simbólicos parecidos com atalhos após o XP?
Ruslan
O preço do progresso! Não faz muito sentido ter um mecanismo para definir links que a maioria dos aplicativos ignora. Não conheço muitas razões para precisar editar o .lnk diretamente.
Julian Knight
3
@JulianKnight Eu já usei uma vez para gerá-los programaticamente para posicionamento em uma pasta que agia como um índice. Eu não tinha o direito de instalar software, mas já estávamos usando o VBA. Modificar um modelo .lnk mostrou-se mais fácil do que gerar um a partir do zero.
Chris H
4

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

notepad.exe shortcut.lnk
Wes Sayeed
fonte
Não, isso não funciona. Ele abre o arquivo para o qual .lnkaponta.
Jez
Em qual aplicativo você está tentando abrir o link?
21320 Wes Wes
3
Isso está incorreto. Eu tentei esta resposta e funciona.
Vinayak
3
@ Vinayak Essa é uma afirmação bastante ousada. Pode funcionar para você na situação em que está sendo usado, mas pode não funcionar para Jez.
Jon
1

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

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

Estranhamente, se você usar Abrir no menu Arquivo FRHED , ele abrirá o arquivo de destino sem perguntar.

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

AFH
fonte
1
Isso não é o Windows solicitando. Isso é Frhed perguntando o que você deve fazer
Vinayak
Muito bem: bobo da minha parte - vou mudar minha resposta.
AFH
Acho que colocar o Bloco de notas no meu SendTomenu é muito útil, permitindo que eu abra qualquer arquivo (incluindo atalhos) no Bloco de notas.
Scott
Observação final (?): Qualquer programa de exibição ou edição baseado em DOS sempre abrirá o link, nunca o destino, pois a função de abertura de arquivo DOS não sabe nada sobre links, portanto, não faz nenhum tratamento especial para eles, ao contrário do arquivo aberto do Windows .
AFH
1

Se você tiver motivos para editar esses arquivos com frequência, adicione um atalho ao notepad.exe à sua pasta SendTo (no Win 7: C: \ Usuários \ USUÁRIO \ AppData \ Roaming \ Microsoft \ Windows \ SendTo). Isso torna o "Send to notepad.exe" disponível na sua Rt. Clique no menu de contexto. O arquivo .ink será aberto e poderá ser editado e salvo no notepad.exe.

user1977596
fonte
0

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

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

MSalters
fonte