Por que versões posteriores do Windows continuam usando arquivos de atalho em vez de links simbólicos?

68

O Windows XP e versões posteriores suportam links simbólicos. No entanto, o Windows continua a usar arquivos de atalho (que armazenam essencialmente o local do arquivo vinculado como texto). Por quê?

Alex
fonte
25
Por que as novas versões do Windows (e Office) salvam arquivos de texto no formato ANSI e não UTF-8? Para perpetrar incompatibilidade e irracionalidade ou para apoiar sistemas legados ...
retrography
9
O Windows XP e versões posteriores oferecem suporte simbólico em determinados sistemas de arquivos. Os links simbólicos funcionam em um sistema de arquivos NTFS no disco rígido, mas não funcionam se copiados para um pendrive USB formatado em FAT 32 ou em um CD-ROM em formato UDF e podem não funcionar se copiados para um servidor de rede (como você geralmente não conhecem o sistema operacional ou o sistema de arquivos usado pelo servidor remoto). Os arquivos de atalho do LNK podem ser copiados com facilidade e funcionar em todos eles.
precisa
12
Os .lnkarquivos do Windows são mais semelhantes aos .desktoparquivos do Linux do que aos links simbólicos.
Arturo Torres Sánchez
3
Symlinks são a segurança complicada sábio (vice problema confuso)
CodesInChaos
2
Então, você parou de usar os favoritos no seu navegador quando o NTFS apareceu? Pode parecer uma comparação absurda, mas apenas se você achar que os atalhos nada mais são do que indicadores de arquivos - isso simplesmente não é o caso.
Luaan 02/02

Respostas:

106

Uma série de razões, eu acho

  1. Você pode armazenar diferentes níveis de compatibilidade contra vários atalhos diferentes no mesmo EXE, conforme interpretados pelo shell, e não pelo sistema de arquivos.
  2. Certos links de atalho não existem realmente no sistema de arquivos. Alguns deles são simplesmente referências a GUIDs ou seqüências especiais interpretadas pelo shell.
  3. Você não pode incluir opções em um link simbólico. Você pode apontar para o EXE, com certeza, mas não pode dizer a ele mais argumentos.
  4. Você não pode escolher um ícone para um link simbólico.
  5. Você não pode escolher em qual diretório trabalhar em um link simbólico.
  6. Os arquivos de atalho não precisam apenas apontar para arquivos, eles podem ser hiperlinks ou links de protocolo (no caso de um arquivo .URL).
  7. Os arquivos LNK podem existir em qualquer sistema de arquivos. Os links simbólicos são tratados pelo próprio sistema de arquivos, no caso do Windows, NTFS.
  8. Não há necessidade real de substituí-los. Eles funcionam, são pequenos, podem ser ampliados no futuro, se houver a necessidade de adicionar mais funcionalidades a eles do que os listados acima.
  9. São necessários direitos administrativos para criar um link simbólico (por uma boa razão - caso contrário, o redirecionamento de arquivos inocentes para arquivos maliciosos pode ser executado com muito pouco trabalho)

Haverá mais motivos do que isso, mas acho que isso é suficiente para você começar :) - Há um link fornecido pelo @grawity aqui que fornecerá algumas leituras adicionais sobre partes deste tópico.

Jonno
fonte
2
Além disso, os atalhos de arquivo armazenam em cache determinados metadados sobre o destino e, ao serem interpretados no nível do shell, permitem que os atalhos sejam atualizados pelo shell se o destino tiver sido movido, o que seria mais difícil com links simbólicos. Em geral, consulte Old New Thing novamente para ver várias coisas interessantes sobre os recursos de atalho.
grawity
5
@ grrawity No entanto, haveria algum benefício importante em transferir esses arquivos para o sistema de arquivos? Eu pensaria que os arquivos .lnk têm um espaço infinito para expandir para mais funcionalidades, se necessário, mantendo a compatibilidade com versões anteriores, e eles não têm muita sobrecarga para eles. Mover isso para o sistema de arquivos seria um pouco exagerado, talvez? Eu não sou de forma alguma um especialista no funcionamento interno dos sistemas de arquivos.
Jonno 02/02
3
É verdade que o próprio FS não teria utilidade para a maioria dessas informações - muitos recursos .lnk são realmente específicos do Explorer, portanto, armazenar tudo como um ponto de nova análise em vez de um arquivo seria um exagero.
grawity
3
Só queria ressaltar que, até onde eu sei, os arquivos LNK não podem ser usados ​​para direcionar URLs (hiperlinks). Você pode usar o mesmo recurso de criação de atalhos no Windows para criar um atalho para uma URL, mas o resultado final é um arquivo .URL (que é um texto sem formatação, essencialmente um arquivo INI), não um arquivo .LNK (que é binário).
Michael Becker
3
Ou start http://superuser.comqual escolhe o navegador padrão, como faria um atalho verdadeiro para um URL. Dito isto, você pode fazer com que os arquivos .LNK aponte para URLs. No final, eles são "monikers COM serializados" e o sistema COM pode ser expandido com novos tipos de moniker.
MSalters 02/02
6

Um link simbólico nada mais é do que um caminho envolvido em uma quantidade muito pequena de mágica do sistema de arquivos. Existem várias maneiras de se tornar inválido ("quebrado"), a maioria das quais envolve um ou mais arquivos ou diretórios sendo renomeados. Como o Windows é um software de consumo, você pode ter um grande número de programas mal projetados em execução em uma instalação "típica". Como resultado, esse tipo de falha é muito mais difícil de evitar do que em um servidor em que (em teoria) todo programa que toca o disco é uma quantidade conhecida.

Os atalhos são imunes à maioria das formas de quebra, pois rastreiam seus alvos independentemente do caminho. Isso os torna mais fáceis de usar. Eles são projetados especificamente para os consumidores, com uma abordagem "apenas faça o que eu quero dizer e não me incomode com os detalhes".

Agora, você pode usar links físicos para isso (até certo ponto), mas os links físicos possuem várias propriedades complicadas que os tornam inadequados para uso do consumidor. Em particular, os arquivos obtêm novos números de inode com muita facilidade e alguns softwares de backup são espetaculares quando confrontados com links físicos. O primeiro poderia (talvez) ser resolvido com o tunelamento do sistema de arquivos (que é, de fato, como os atalhos resolvem um problema relacionado), mas o segundo é um problema muito mais difícil.

(Eu provavelmente também devo observar que "resolver" os links físicos com tunelamento é decididamente não trivial, pois não se trata apenas de anexar novamente os metadados "perdidos". Os inodes são vinculados ao esquema de alocação de disco, portanto você não pode mesclar arbitrariamente ou reatribua-os após o fato sem muito trabalho. Como os atalhos usam outros metadados que podem ser facilmente encapsulados, como o horário da criação, eles não têm esse problema.)

Kevin
fonte