Почему Windows ограничивает наложения значков на 15?

Мы можем видеть бесконечные вопросы о конфликтах Dropbox против TortoiseSVN и многих других приложений.

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

В моем случае у меня есть только Dropbox и TortoiseSVN. Dropbox действительно становится раздражающим - после каждого обновления мне нужно запускать созданный мной скрипт, который удаляет оверлеи Dropbox из реестра, а затем перезапускает Windows Explorer.

Я понимаю, что Windows ограничивает оверлеи до 15, вероятно, из-за производительности.
Однако, увеличит ли это до 25~35 огромное влияние на производительность?
Почему Microsoft еще не поняла, что это очень популярная проблема, и пыталась исправить это?
Почему, по крайней мере, нет опции, которую продвинутые пользователи могут изменить, чтобы увеличить этот лимит?

1 ответ

Решение

В моем случае у меня есть только Dropbox и TortoiseSVN. Dropbox действительно становится раздражающим - после каждого обновления мне нужно запускать созданный мной скрипт, который удаляет оверлеи Dropbox из реестра, а затем перезапускает Windows Explorer.

Удалите все неиспользуемые наложения из следующего местоположения:

  • KEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ShellIconOverlayIdentifiers

  • KEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Explor эр \ ShellIconOverlayIdentifiers

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

Повлияет ли увеличение до 25~35 на производительность?

Поскольку текущий предел не может быть изменен, мы не можем предсказать, какое будет влияние на производительность, если ограничение будет увеличено.

Почему Microsoft еще не поняла, что это очень популярная проблема, и пыталась исправить это?

Я бы предположил, что это влияет на меньше людей, чем вы думаете. Только кто-то из команды Windows Shell на самом деле знает этот ответ. Пока Microsoft не обнародует свое решение, мы можем только делать предположения, основанные на том, что никто не увеличил лимит.

Почему, по крайней мере, нет опции, которую продвинутые пользователи могут изменить, чтобы увеличить этот лимит?

Только кто-то из команды Windows Shell на самом деле знает этот ответ. Пока Microsoft не обнародует свое решение, мы можем только делать предположения, основанные на том, что никто не написал код, позволяющий нам увеличить лимит.

Раймонд Чен (Raymond Chen), разработчик Microsoft, говорит о наложении значков

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

Г-н Чен также заявил:

Еще один пример того, как приложения имеют эгоистичное представление о производительности, - компания, разрабатывающая обработчик наложения значков. Оболочка рассматривает вычисления с наложением как элемент с низким приоритетом, поскольку более важно выводить значки на экран, чтобы пользователь мог начать делать то, что он хотел. Украшения могут прийти позже. Эта компания хотела знать, можно ли каким-то образом улучшить свою производительность и наложить их на экран еще до того, как появится значок, демонстрируя феноменально эгоистичную интерпретацию "производительности".

Источник: Что это за маленькие значки наложения: редакция Windows 7

Я также хочу исправить неправильное представление. Да, всего выделено 15 значков, НО на самом деле доступно 11 наложенных значков, потому что система Windows резервирует 4 для себя, так что, по сути, это 11 значков, доступных для других программ. (15-4 = 11). Это согласно официальному сайту поддержки Microsoft ( заархивированный URL)

Количество обработчиков наложения значков, которые может поддерживать система, ограничено объемом доступного пространства для наложения значков в списке образов системы. В настоящее время для наложения значков выделено 15 слотов, 4 из которых зарезервированы системой. Когда в системе зарегистрировано более 11 обработчиков наложения значков, только первые 11 наложений значков, которые предоставляются обработчиками наложения значков, добавляются в список системных изображений. Оставшиеся обработчики наложения значков не используются.

Источник: официальный сайт поддержки Microsoft ( заархивированный URL)

PSA Уведомление:

Я также разработал страницу Википедии, предназначенную исключительно для перечисления всех наложений значков оболочки, чтобы пользователи могли определить, какие из них наиболее полезны для Dropbox, OneDrive, Tortoise и т. Д.

Пожалуйста, проверьте мою вики-страницу и внесите свой вклад:

https://en.wikipedia.org/wiki/List_of_Shell_Icon_Overlay_Identifiers

По этой теме есть новое сообщение в блоге от Раймонда Чена: почему существует ограничение в 15 наложений значков оболочки? это еще более подробно, но короткая версия такова: причинами являются совместимость со старыми версиями и API, проблемы с производительностью, а также тот факт, что наложения значков не рекомендуются в наши дни:

В основном это сводится к "Это было бы много работы, и мы ленивы".

а также:

Но главная причина, по которой это не делается, заключается в том, что оверлеи не рекомендуются как способ передачи метаданных о файле пользователю.

а также:

Windows 10 делает шаг от наложения значков, перемещая индикатор состояния синхронизации файлов OneDrive из наложения значков в отдельный столбец "Состояние".

Другие вопросы по тегам