作者:手机用户2502855477 | 来源:互联网 | 2023-06-24 17:45
笔记win10本本前段时间TortoiseGit图标显示还是正常的。这几天开始不显示TortoiseGit图标。看了资料,问题出在windows只支持最多15个外壳图
笔记
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图标 显示正常了。