为什么 Windows 将图标覆盖限制为 15 个?

Nun*_*uno 31 windows windows-registry icons dropbox tortoise-svn

我们可以看到关于 Dropbox 与 TortoiseSVN 与许多其他应用程序图标覆盖冲突的无尽问题。

两个例子:
为什么图标覆盖(来自 3rdParty-Apps)没有显示在 Win8 资源管理器中?
我可以阻止覆盖图标的更改吗?

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

我知道 Windows 将覆盖限制为 15 可能是因为性能。
但是,增加到 25~35 会不会对性能造成巨大影响?
为什么微软还没有意识到这是一个非常流行的问题并试图对此进行修复?
为什么至少没有高级用户可以更改以增加此限制的选项?

Ram*_*und 26

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

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

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

  • KEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\explor??er\ShellIconOverlayIdentifiers

来源:为什么图标覆盖(来自 3rdParty-Apps)没有出现在 Win8 资源管理器中?

增加到 25~35 会不会对性能造成巨大影响?

由于无法更改当前限制,因此我们无法预测如果增加限制会产生什么样的性能影响。

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

我认为它对人的影响比你认为的要少。只有来自 Windows Shell 团队的人才能真正知道这个答案。在微软公布他们的决定之前,我们只能做出有根据的猜测,这基本上是没有人增加了限制。

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

只有来自 Windows Shell 团队的人才能真正知道这个答案。在微软公布他们的决定之前,我们只能做出有根据的猜测,这基本上是没有人编写代码来允许我们增加限制。

微软开发人员 Raymond Chen 说以下关于图标覆盖

一般来说,叠加并不是一种很好的信息呈现方式,因为每个图标只能有一个叠加,而每个 ImageList 最多只能有 15 个叠加。如果有两个或多个叠加层适用于一个项目,那么一个将获胜,其他将失败,此时作为确定哪些属性适用于项目的方式的叠加层的价值会减少,因为这是唯一确定的方法缺少属性是指您根本看不到叠加层。(如果您看到其他叠加层,则无法判断是因为您的资产丢失了,还是因为显示的是其他叠加层而不是您的资产。)

陈先生还表示:

另一个对性能抱有自私看法的应用程序示例来自一家开发图标覆盖处理程序的公司。Shell 将覆盖计算视为低优先级项目,因为在屏幕上显示图标更为重要,这样用户就可以开始做他们想做的任何事情。装饰品可以晚点来。这家公司想知道是否有一种方法可以提高他们的性能,甚至在图标出现之前就将其叠加到屏幕上,展示了对“性能”的一种非常自私的解释。

来源:那些小覆盖图标是什么:Windows 7 版


Bor*_*nov 8

Raymond Chen 发表了一篇关于该主题的新博文:为什么外壳图标覆盖限制为 15 个? 其中包含更多细节,但简短的版本是:原因是与旧版本和 API 的兼容性、性能问题以及现在不推荐图标覆盖的事实:

基本上它归结为“这将是很多工作,我们很懒惰。”

并且:

但是这没有完成的主要原因仅仅是不建议将覆盖作为向用户传达有关文件的元数据的方式

和:

Windows 10 通过将 OneDrive 文件同步状态指示器从图标覆盖移动到单独的状态列,从而远离图标覆盖。

  • OneDrive 在 Windows 10 中使用什么 API 机制来“将其同步状态指示器移动到单独的状态列”? TortoiseSVN 现在可以做同样的事情吗? (2认同)

rwa*_*128 6

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

系统可以支持的图标覆盖处理程序的数量受系统图像列表中图标覆盖可用空间量的限制。目前为图标覆盖分配了 15 个插槽,其中 4 个由系统保留。当系统中注册的图标覆盖处理程序超过 11 个时,仅将图标覆盖处理程序提供的前 11 个图标覆盖添加到系统图像列表中。不使用剩余的图标覆盖处理程序。

来源:微软官方支持网站存档网址

PSA通知:

我还设计了一个专门用于列出所有外壳图标覆盖的维基百科页面,因此用户可以确定哪些对 Dropbox、OneDrive、Tortoise 等最有用...

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

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

  • 这太棒了,你能添加 Adob​​e Creative Cloud 图标叠加吗?AccExtIco1, AccExtIco2, AccExtIco3 (2认同)