为什么图标覆盖(来自第三方应用程序)没有显示在 Win8 资源管理器中?

为什么图标覆盖(来自第三方应用程序)没有显示在 Win8 资源管理器中?

这些在 Windows 资源管理器中为您提供有用信息的精彩图标覆盖并未显示出来。我的意思的截图

Dropbox 最让人恼火的是(我已经读过https://www.dropbox.com/help/154/en)。我刚刚尝试重新安装 Dropbox - 没有帮助。我也遇到了这个问题链接外壳扩展所以我不认为这是 Dropbox 的问题;我的操作系统出了问题。操作系统实际上是一个相当新的全新安装...

操作系统:Win8 Pro 64位。

答案1

看起来你安装了太多注册 Overlay 图标的工具。Windows 有一个丑陋的仅限 15 个覆盖图标因为旧的 16 位代码无法更改:

值 15 来自于图像列表的相应限制。ImageList_SetOverlayImage 函数支持每个图像列表最多 15 个图像列表覆盖。(嘿,以前更糟糕。限制以前只有 3 个!)

好的,但为什么只有 15 个?为什么不更多?

覆盖图像是从图像列表绘制图像时使用的信息之一。选项编码在 fStyle 参数中,当将位划分为各种用途时,可以使用 4 位来指定覆盖图像。(您会得到 15 个覆盖图像而不是 16 个,因为您丢失了其中一个值以指定“无覆盖”。)

好的,但是 fStyle 参数中的值仅使用低 16 位。那么高 16 位呢?那里有足够的空间。

16 位限制是从 16 位版本的公共控件(在 Windows 95 中仍需支持)继承而来的。当然,现在没有人关心 16 位版本的公共控件,所以为什么不开始使用高位呢?

有一个不令人满意的解释:内部管理 fStyle 的代码在某些地方仍然使用 WORD,因此必须修改管理 fStyle 的所有代码。这种情况发生在 Windows 的多个模块中,因此必须在多个组件之间进行同步更改。这是二进制级别的重大更改,因为接口不再兼容。重大更改在程序上难以协调:受影响的代码可能对 shell 团队不可见,因为它们位于尚未 RI 到主干的遥远的叶子分支中。将 fStyle 从 WORD 扩展为 DWORD 可能会对某些组件产生深远的影响。

因此,微软无法在不破坏 Explorer 的情况下真正修复该问题。

打开 regedit,转到

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers

并计算物品数量。是否达到 15 的限制?

如果是,则卸载或重新配置此处显示的应用程序或手动删除注册表项(当然要备份它们)。

答案2

您不一定需要删除任何键,您所要做的就是按顺序重命名这些键并在其前面加上数字,然后重新启动机器。连续的数字将确保您的操作系统仅计算前 15 个。

以下是一个例子:

在此处输入图片描述

相关内容