3

У меня есть файл XML, сохраненный с расширением .xml . Файлы XML регистрируются для открытия в Notepad++, и двойной щелчок по файлу открывает его в Notepad++, как и ожидалось. Тем не менее, значок показывает, что это файл Excel, и это правильно - файл форматируется как SpreadsheetML.

Я привык к файлам, связанным с определенной программой, чтобы открыть их, но как Windows Explorer узнает, как отобразить значок Excel для этого файла?

2 ответа2

3

Я почти уверен, что при установке Office на компьютер с Windows 7 он меняет путь к значку XML со статического пути (см. HKEY_CLASSES_ROOT\xmlfile\DefaultIcon в реестре) на переменную «% 1».

В сочетании с тем, что запись xmlfile также имеет ShellEx\IconHandler означает, что значок динамически контролируется DLL (или каким-либо другим обработчиком). Если вы посмотрите GUID в данных значения IconHandler по умолчанию, вы сможете выяснить, какая программа используется для обработки этого значка.

Шахта случается {AB968F1E-E20B-403A-9EB8-72EB0EB6797E}, так что я искал в реестре , пока я не нашел HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{AB968F1E-E20B-403A-9EB8-72EB0EB6797E}\InprocServer32

Который перечисляет "C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE12\MSOXEV.DLL" в качестве программы, обрабатывающей это. Таким образом, при запросе XML проверяется MSOXEV.DLL, который глубоко исследует файл и определяет, какой значок отображать.

В ответе на аналогичный вопрос в StackOverflow также есть отличное объяснение, если вы хотите проверить это.

1

Значки, используемые в Windows, сохраняются в кэше, который используется для оптимизации отображения значков.

Вы можете:

  1. перезагрузите компьютер

  2. Восстановите кэш иконок, изменив размер иконок (измените его по внешнему меню)

  3. Создайте заново файл кэша значков, удалив его;

    • В Windows XP удалите файл:

      C:\Documents and Settings\Your User Name\Local Settings\Application Data\Iconcache.db
      
    • В Vista/7 удалите файл:

      %USERPROFILE%\AppData\Local\Iconcache.db
      

После удаления завершите работу из диспетчера задач для каждого процесса explorer.exe и запустите новый (при этом будет воссоздан кэш значков).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .