O que determina o ícone que o Windows Explorer mostra para um arquivo específico?

3

Eu tenho um arquivo XML salvo com a extensão .xml . Os arquivos XML são registrados para abrir com o Notepad ++ e clicar duas vezes no arquivo abre-o no Notepad ++ conforme o esperado. No entanto, o ícone mostra que é um arquivo do Excel, e com razão - o arquivo é formatado como SpreadsheetML.

Estou acostumado a arquivos associados a um determinado programa para abri-los, mas como o Windows Explorer sabe como mostrar o ícone do Excel para esse arquivo?

    
por technomalogical 02.11.2011 / 22:27

2 respostas

3

Tenho certeza de que o que acontece é que, quando você instala o Office em um computador com Windows 7, ele altera o caminho do ícone XML de um caminho estático (consulte: HKEY_CLASSES_ROOT\xmlfile\DefaultIcon no registro) para uma variável "% 1".

Em combinação com o fato de que a entrada xmlfile também possui uma chave ShellEx\IconHandler significa que o ícone é dinamicamente controlado por uma DLL (ou algum outro manipulador). Se você procurar o GUID nos dados do valor padrão do IconHandler, poderá descobrir qual programa está sendo usado para lidar com esse ícone.

A mina é {AB968F1E-E20B-403A-9EB8-72EB0EB6797E}, então eu procurei o registro até encontrar HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{AB968F1E-E20B-403A-9EB8-72EB0EB6797E}\InprocServer32

Qual lista "C: \ Arquivos de Programas (x86) \ Arquivos Comuns \ Microsoft Shared \ OFFICE12 \ MSOXEV.DLL" como o programa manipulá-lo. Portanto, quando um XML é consultado, o MSOXEV.DLL é verificado, o que interroga o arquivo profundamente e determina qual ícone exibir.

Há também um excelente explicação em uma resposta a uma pergunta semelhante sobre no StackOverflow se você quiser ir verificar isso também.

    
por 02.11.2011 / 23:03
1

Os ícones usados no Windows são salvos em um cache, que é usado para otimizar a exibição de ícones.

Você pode:

  1. reinicie seu computador

  2. Recrie o cache de ícones alterando o tamanho do ícone (altere-o pelo menu de aparência)

  3. Recrie o arquivo de cache de ícones excluindo-o;

    • No Windows XP, exclua o arquivo:

      C:\Documents and Settings\Your User Name\Local Settings\Application Data\Iconcache.db
      
    • No Vista / 7, apague o arquivo:

      %USERPROFILE%\AppData\Local\Iconcache.db
      

Após a exclusão, encerre o Gerenciador de Tarefas a cada processo explorer.exe e inicie um novo (isso irá recriar o cache de ícones).

    
por 02.11.2011 / 23:03