git - TortoiseGit图标不显示的问题

笔记

在这里插入图片描述

win10本本前段时间TortoiseGit图标显示还是正常的。
这几天开始不显示TortoiseGit图标。
看了资料,问题出在windows只支持最多15个外壳图标(shell icon)覆盖(overlay)。
为啥只支持15个外壳图标,参见Why is there a limit of 15 shell icon overlays?

控制shell icon overlay项数目少于15

打开注册表 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
如果看到条目数量大于15个,那么排在后面的条目就不能在外壳中显示自定义图标了。

我将除了TortoiseGit之外的外壳图标覆盖都删掉了
其中 360UDiskGuard Icon Overlay 可以删掉,但是计算机重启后,360又给加上了。

其中 EnhancedStorageShell 是删不掉的,删除时,会报错,提示不能删除。

导出这个分支的注册表内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\       360UDiskGuard Icon Overlay]
@="{CC00F81D-5262-450A-B1FA-D6BEE3406263}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\  Tortoise1Normal]
@="{C5994560-53D9-4125-87C9-F193FC689CB2}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\  Tortoise2Modified]
@="{C5994561-53D9-4125-87C9-F193FC689CB2}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\  Tortoise3Conflict]
@="{C5994562-53D9-4125-87C9-F193FC689CB2}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\  Tortoise4Locked]
@="{C5994563-53D9-4125-87C9-F193FC689CB2}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\  Tortoise5ReadOnly]
@="{C5994564-53D9-4125-87C9-F193FC689CB2}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\  Tortoise6Deleted]
@="{C5994565-53D9-4125-87C9-F193FC689CB2}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\  Tortoise7Added]
@="{C5994566-53D9-4125-87C9-F193FC689CB2}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\  Tortoise8Ignored]
@="{C5994567-53D9-4125-87C9-F193FC689CB2}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\  Tortoise9Unversioned]
@="{C5994568-53D9-4125-87C9-F193FC689CB2}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\EnhancedStorageShell]
@="{D9144DCD-E998-4ECA-AB6A-DCD83CCBA16D}"


可以发现条目的名字有意思,除了删不掉的EnhancedStorageShell,其他项名称前面都带了空格。
e.g. " Tortoise9Unversioned",项名称前面带了2个空格。
e.g. " 360UDiskGuard Icon Overlay", 项名称前面带了7个空格,360真离谱
前面手工删掉的onedriver的条目,项名称前面也带了空格。
猜测,谁带空格带的多,谁就显示在前面。谁显示在前面,那么外壳图标覆盖的优先级就越高。

这也说明一个道理,如果自己要加shell icon overlay的项,需要先遍历这个节点,将项名称前面空格的最大数量统计出来,自己要插入的项名称前面带的空格一定要比他们多,才能优先显示自己的shell icon overlay.

将图标缓存增加

图标缓存必须小于8*1024, 刚装完的win10默认是没有这个值的。可以手工加上(可选),让shell icon 显示的快一些。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer]
"Max Cached Icons"="8192"

END

重启计算机后,TortoiseGit图标 显示正常了。
在这里插入图片描述

备注 - 2022_0148_1912

不要轻易删除其他项,会引起右键菜单时,资源管理器无响应或重启。
最好的方法是,将TortoiseGit的项名称前面多加几个空格,比其他项的空格多就行。这样最稳妥。
如果在资源管理器中右键无响应了,还得去改另外一个右键菜单的注册表。

计算机\HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers

这块和上面删掉的那些右键shell icon overlay 有关联。
除了以下3项,其余的\HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers项都删掉.

\HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\New
\HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\TortoiseGit
\HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\WorkFolders
在这里插入图片描述
这下好使了。还是改注册表之前,先将改的分支备份以下才靠谱。
这样处理后,其他程序加的右键菜单条目就没有了。

补充

本地的TortoiseGit经常显示的慢, 或者不显示.
今天去看了一下有没有新版本, 看到最新的版本为2.15, 我本地的是2.13. 准备装一个.
正好想到图标显示的问题, 去看了官方FAQ, 有说到.
官方说将以下2个注册表位置的图标覆盖多余的选项删掉就行.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers

先手工删除可以删的全部条目, 最后发现删不掉的只有EnhancedStorageShell.

依次安装 Git-2.42.0.2-64-bit.exe, TortoiseGit-2.15.0.0-64bit.msi, TortoiseGit-LanguagePack-2.15.0.0-64bit-zh_CN.msi
重启计算机后, ShellIconOverlayIdentifiers中的正常值就有了, TortoiseGit图标显示也正常了.
暂时没发现右键菜单卡死的问题.

END

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐