Windows为什么将图标叠加层限制为15个?


27

我们可以看到有关Dropbox,TortoiseSVN和许多其他应用程序图标重叠冲突的无休止的问题。

两个示例:
为什么Win8 Explorer中没有显示图标叠加层(来自3rdParty-Apps)?
我可以防止更改覆盖图标吗?

就我而言,我只有Dropbox和TortoiseSVN。Dropbox确实变得很烦人-每次更新后,我都需要运行我制作的脚本,该脚本从注册表中删除Dropbox的覆盖图,然后重新启动Windows资源管理器。

我了解Windows可能由于性能限制将叠加层限制为15个。
但是,增加到25〜35会对性能产生巨大影响吗?
微软为什么还没有意识到这是一个非常受欢迎的问题,并试图对此进行修复?
至少为什么没有高级用户可以更改以增加此限制的选项?


我前一段时间问这个微软,他们告诉我“性能问题”作为原因。他们没有增加限制,他们还计划完全杀死他们。
magicandre1981 '01

1
不仅仅是性能。在当前的实现中,结构中有4位定义了覆盖索引,最多可提供15个覆盖。增加此数字所需的更高有效位用于其他目的。获取更多覆盖图标的唯一方法是更改​​实现,这将对兼容性产生重大影响。有大量的应用程序(遵循所有规则的编写良好的应用程序)依赖于当前的实现,如果更改,则会中断。
LMiller7 '17

Answers:


24

就我而言,我只有Dropbox和TortoiseSVN。Dropbox确实变得很烦人-每次更新后,我都需要运行我制作的脚本,该脚本从注册表中删除Dropbox的覆盖图,然后重新启动Windows资源管理器。

从以下位置删除所有未使用的覆盖:

  • KEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ShellIcon‌叠加层标识符

  • KEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ explorer \ Shell \ ShellIconOverlayIdentifiers

来源:为什么Win8 Explorer中没有显示图标叠加层(来自3rdParty-Apps)?

增加到25〜35会对性能产生巨大影响吗?

由于无法更改当前限制,因此我们无法预测如果增加限制将会对性能产生何种影响。

微软为什么还没有意识到这是一个非常受欢迎的问题,并试图对此进行修复?

我想它会比您认为的影响更少的人。Windows Shell团队中只有一个人实际上会知道此答案。在Microsoft宣布其决策之前,我们只能做出有根据的猜测,这基本上是没有人增加限制。

至少为什么没有高级用户可以更改以增加此限制的选项?

Windows Shell团队中只有一个人实际上会知道此答案。在Microsoft宣布其决策之前,我们只能做出有根据的猜测,这基本上是没有人编写代码来允许我们增加限制。

Microsoft开发人员Raymond Chen说了以下有关图标覆盖的内容

一般而言,覆盖图不是呈现信息的好方法,因为每个图标只能有一个覆盖图,并且每个ImageList最多有15个覆盖图。如果有两个或多个应用于某个项目的叠加层,则一个将获胜而另一个则会丢失,这时,作为确定对某项应用哪些属性的一种方法,该叠加层的值将减小,因为唯一的确定方法是当您根本看不到覆盖时,就是缺少属性。(如果看到其他叠加层,则无法判断是由于缺少属性还是因为其他叠加层而不是您的叠加层。)

陈先生还说:

具有自私的性能视图的应用程序的另一个示例来自开发图标叠加处理程序的公司。Shell将覆盖计算视为低优先级项目,因为在屏幕上显示图标更为重要,这样用户才能开始执行其想要执行的操作。装饰可以稍后再来。该公司想知道是否有一种方法可以改善性能,甚至在图标出现之前就将其覆盖在屏幕上,从而展示出对“性能”的一种极其自私的解释。

来源:那些小的叠加图标是什么:Windows 7版本


3

Raymond Chen撰写了有关该主题的新博客文章:为什么限制了15个外壳图标覆盖? 其中有更多细节,但简短的版本是:原因是与旧版本和API的兼容性,性能问题以及最近不建议使用图标叠加层的事实:

基本上可以归结为“这需要大量工作,而且我们很懒。”

并且:

但是不能完成的主要原因是不建议使用覆盖作为向用户传达关于文件的元数据的方式

和:

Windows 10通过将OneDrive文件同步状态指示器从图标叠加层移到单独的“状态”列,使它远离图标叠加层。


是的 我注意到OneDrive的操作方式有所不同,甚至可以显示“仅在线”文件。这是一个非常酷的功能,似乎可以提供更大的灵活性。非常感谢你提供的信息。
努诺

1

我也想纠正一个误解。是的,总共分配了15个图标,但是实际上有11个覆盖图标可用,因为Windows系统为其自身保留了4 个图标,因此实际上,它有11个图标可供其他程序使用。(15-4 = 11)。这是根据Microsoft官方支持网站存档的URL得出的

系统可以支持的图标覆盖处理程序的数量受系统映像列表中图标覆盖可用空间的限制。当前有15个插槽用于图标叠加,其中4个由系统保留。当系统中注册了11个以上的图标叠加层处理程序时,仅图标叠加层处理程序提供的前11个图标叠加层会添加到系统映像列表中。其余的图标覆盖处理程序将不使用。

来源:Microsoft官方支持网站存档的URL

PSA通知:

我还设计了一个Wikipedia页面,该页面专门用于列出所有外壳程序图标覆盖,因此用户可以确定Dropbox,OneDrive,Tortoise等对自己最有用的覆盖...

请查看我的Wiki页面,并贡献:

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


太棒了,您可以添加Adobe Creative Cloud图标叠加层吗?AccExtIco1,AccExtIco2,AccExtIco3
JamesHenare
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.