Почему наложения значков (из 3rdParty-Apps) не отображаются в проводнике Win8?

35

Эти замечательные наложения значков, которые дают вам полезную информацию в проводнике Windows, не отображаются. Скриншот того, что я имею в виду

Это самое раздражающее в Dropbox (я уже читал https://www.dropbox.com/help/154/en ). Я только что попытался переустановить Dropbox - без помощи. У меня есть эта проблема также с расширением Link Shell, поэтому я не думаю, что это проблема Dropbox; и что-то не так в моей ОС. ОС на самом деле довольно свежая чистая установка ...

ОС: Win8 Pro 64-битная.

Клюка
источник
3
Есть ли способ сделать это программно, чтобы программа установки могла заметить проблему и исправить ее во время установки?
jordanpg
связанные, но спросили позже: superuser.com/q/809529/3588
CAD CAD

Ответы:

39

Похоже, вы установили слишком много инструментов, которые регистрируют значки наложения. Из-за старого 16-битного кода, который не может быть изменен, Windows имеет ужасное ограничение только на 15 значков наложения :

Значение 15 пришло из соответствующего предела для списков изображений. Функция ImageList_SetOverlayImage поддерживает до 15 наложений списка изображений на один список изображений. (Эй, раньше было хуже. Предел был всего 3!)

Хорошо, но почему только 15? Почему не больше?

Наложение изображения является одной из частей информации, используемой при рисовании изображения из списка изображений. Опции кодируются в параметре fStyle, и когда биты были разделены для различных целей, были доступны четыре бита, которые можно использовать для указания наложенного изображения. (Вы получаете 15 наложенных изображений вместо 16, потому что вы теряете одно из значений, чтобы указать «без наложения».)

Хорошо, но значения в параметре fStyle используют только младшие 16 бит. Как насчет старших 16 бит? Там много места.

16-разрядное ограничение было перенесено из 16-разрядной версии общих элементов управления (которые все еще должны были поддерживаться в Windows 95). Конечно, в настоящее время никому нет дела до 16-битной версии общих элементов управления, так почему бы не начать использовать старшие биты?

Есть неудовлетворительное объяснение: внутренний код, который управляет fStyle, все еще использует WORD в некоторых местах, поэтому весь код, который управляет fStyle, должен быть пересмотрен. Это происходит в нескольких модулях Windows, поэтому необходимо синхронизировать изменения в нескольких компонентах. Это серьезное изменение на двоичном уровне, потому что интерфейсы больше не совместимы. Разрывать изменения с процедурной точки зрения сложно: скоординированный код может быть невидим для команды оболочки, потому что они находятся в далекой конечной ветви, которая еще не завершила RI в ствол. Возможно, расширение fStyle с WORD на DWORD имеет далеко идущие последствия для некоторых компонентов.

Таким образом, Microsoft не может исправить это, не сломав Explorer.

Откройте regedit, перейдите к

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers а также
  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers

и посчитать количество предметов. Вы достигаете предела 15?

Если да, то либо удалите или измените конфигурацию приложений, показанных здесь, либо удалите записи реестра вручную (конечно же, их резервное копирование).

magicandre1981
источник
Я установил оба на свою Windows7 - и, вероятно, еще много всего - win7 работал в течение ~ 3 лет ...
kluka
3
Откройте regedit, перейдите к HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiersи HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\explorer\ShellIconOverlayIdentifiersи подсчитайте количество элементов. Вы достигаете предела 15?
magicandre1981
20 предметов .... это заполнено Skydrive . Arrgh! (Я удалил другую программу, и теперь она работает)
kluka
Остается вопрос: можно ли вручную удалять записи реестра в этой «папке»?
Клука
это я сохраняю, но сначала делаю резервную копию ключа, а затем отключаю ненужные записи. У меня также есть проблема и удалены некоторые записи TSVN.
magicandre1981
19

вам не обязательно удалять какие-либо ключи, все, что вам нужно сделать, это переименовать эти ключи с номером перед ними в последовательном порядке, а затем перезагрузить компьютер. Последовательные числа гарантируют, что ваша ОС считает только 15 лучших.

Вот пример:

введите описание изображения здесь

Джесси. Q
источник
17
Это просто прекрасный пример Windows во всем его безумии.
kluka
9
Это почти наверняка запутает соответствующие приложения или их [un] установщики ...
SamB
Это не очень помогает. Например, Skydrive раз в неделю переименовывает свои иконки. Я не хочу делать это регулярно.
Триларион
4
Обходной путь, который я нашел (и который работал для меня в течение нескольких лет), заключается в добавлении копий наложений, которые я хочу показать с именами, которые стоят перед всеми остальными ... например ___CRD3333DropboxExt1. Это очень уродливый хак, но делает наложения стабильными.
Крис Р. Доннелли
2
Экспортируя настройки реестра, я обнаружил, что жадные Dropbox и OneDrive предшествуют своим именам ключей с пробелами (которые не отображаются в RegEdit и побеждают в сортировке ASCII) - так что вам нужно быть довольно хитрыми с префиксами имени ключа '< sp> <sp> <sp> 011keyname '
Эд Рэндалл