Compartilhar via


Segredos do Windows Rastreando atalhos

Raymond Chen

Se move o destino de um atalho, o shell do Windows tentará localizar o novo local;Isso é conhecido como "Resolução"o atalho. Mas o algoritmo o shell usa para localizar esse destino?

A resposta: Depende.

Windows 95

Quando atalhos foram introduzidos no Windows 95, sistemas de arquivos não tem muita facilidades associado ao objeto de controle. O shell do Windows 95 usa um algoritmo de pesquisando simples para localizar o destino do atalho perdidos: Quando é criado um atalho, várias propriedades do destino do atalho são registradas no arquivo de atalho propriamente dito — propriedades, como o nome do arquivo, tamanho do arquivo, hora de criação e o tempo da última modificação, bem como informações sobre a unidade que contém o arquivo.

Essas propriedades são atualizadas periodicamente quando o atalho é usado, e quando o destino do atalho fica faltando, o shell inicia procurando um arquivo com tantas propriedades possível em comum com o arquivo de destino pretendido. Quando encontrar um arquivo com aparência semelhante para o destino original, ele declara o destino como tendo sido encontrado.

Propriedades diferentes têm importância variada, mas hora de criação tem o peso maior, porque essa propriedade tende a permanecer anexado a um arquivo mesmo depois que ele foi modificado e até mesmo renomeado. Encapsulamento de sistema de arquivo ajuda a manter essas informações associadas ao arquivo, mesmo quando programas involuntariamente funcionar de maneira que normalmente seria destruir as informações.

A pesquisa começará no diretório que foi o local do arquivo último conhecidos. Mas até localizar o ponto de partida pode demorar um pouco de trabalho se a unidade tiver sido alterado;Por exemplo, se o destino do atalho em uma unidade de rede mapeado para unidade "O"mas agora está mapeado para unidade "p".

Depois de pesquisar o diretório de última conhecidos, a pesquisa descenda em subdiretórios;em seguida, expande para fora para o diretório pai e diretórios irmãos;em seguida, move para o diretório avô, aunts, tias e primas — muito muito cada relativo conhecido para a humanidade. Se a pesquisa continua por dois minutos com não sorte, o esforço é abandonado (mesmo que nem todos os diretórios de candidato tem sido pesquisados).

A forma de NT

O pessoal de sistema de arquivo do Windows NT observado o algoritmo de resolução de atalho do Windows 95 e zombou. " Podemos fazer melhor do que: Estamos orientada a objeto!" Cada objeto NTFS tem um identificador de objeto;um atalho com um destino que está em um volume NTFS também registra o identificador de objeto de destino do atalho, bem como o identificador de objeto da própria unidade.

Quando se trata de tempo para resolver o atalho, o shell pergunta link controle serviço distribuído para procurar o objeto original. Em um domínio, isso pode produzir resultados surpreendentes, como localizar o arquivo mesmo quando a unidade foi retirada de um computador e instalada no outro.

Há uma série de maneiras que os administradores podem afetar o algoritmo que o shell optar por usar. Se você ativar o não rastrear atalhos do shell em perfis móveis (LinkResolveIgnoreLinkInfo) diretiva, o shell não irá tentar localizar a unidade original. Se o destino do atalho em uma unidade de rede, o shell não tentará localizar o recurso de rede original ao determinar o local inicial para a pesquisa de estilo do Windows 95. Ele apenas irá considerar que a letra da unidade é correta;Se não estiver, bem, o que acontece, acontece.

Esta diretiva foi criada para ambientes que têm um pool de recursos de rede idênticos, onde a carga é distribuída por ter um script de logon conectar-se a unidade "O" (por exemplo) a um servidor diferente dependendo do usuário. Mesmo que dois usuários estiverem se conectando a dois servidores diferentes fisicamente, eles são logicamente idênticos. Se você definir esta diretiva, um atalho para O:\program.exe executará o programa no momento na unidade "O",mesmo que a unidade "O"não está conectado ao mesmo recurso de rede como quando o atalho foi criado.

Há também um par de diretivas que permitem desativar dois algoritmos de objeto local depois que o ponto de partida tiver sido determinado: a não usar o método baseado em rastreamento ao resolver shell atalhos (NoResolveTrack) diretiva desativa o algoritmo de controle de objeto sofisticado do NTFS;a não usar o método baseado em pesquisa ao resolver shell atalhos (NoResolveSearch) diretiva desativa o algoritmo de pesquisa tecnologia do Windows 95.

Reparar desfeitos atalhos é um dos trabalhos thankless do shell: As pessoas ainda não percebem que eles estiver depender do recurso até que ele pára de funcionar.

Web site de Raymond Chen, The Old New Thing de e escreveu um livro (Addison-Wesley 2007) homôimo lidam com a históia do Windows e da programação Win32. Às vezes, ele codifica informações através da conversão para o alemão (incorretamente).