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

27

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

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

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

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

Нуно
источник
Я спросил это Microsoft некоторое время назад, и они говорят мне "проблемы перфорации" как причина. Они не увеличивают лимит, у них также есть планы убить их полностью.
magicandre1981
1
Это не просто производительность. В текущей реализации в структуре имеется 4 бита, которые определяют индекс наложения, обеспечивающий максимум 15 наложений. Более значимые биты, необходимые для увеличения этого числа, используются для другой цели. Единственный способ получить больше наложенных значков - изменить реализацию, что будет иметь серьезные последствия для совместимости. Существует большое количество приложений (хорошо написанных приложений, которые следуют всем правилам), которые полагаются на текущую реализацию и сломаются, если она будет изменена.
LMiller7

Ответы:

24

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

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

  • KEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ShellIcon OverlayIdentifiers

  • 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

Ramhound
источник
3

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

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

а также:

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

а также:

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

Борислав Иванов
источник
Да! Я заметил, что OneDrive делает это по-другому, и может даже показывать файлы, которые «только онлайн». Это очень крутая функция, которая дает больше гибкости. Большое спасибо за информацию.
Нуно
1

Я также хочу исправить неправильное представление. Да, всего выделено 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

rwat128
источник
Это фантастика, можете ли вы добавить наложение значков Adobe Creative Cloud? AccExtIco1, AccExtIco2, AccExtIco3
Джеймс Хенаре