原文 http://blog.csdn.net/woyaowenzi/article/details/7538053
TortoiseSVN覆盖图标消失及寻回方法
最近发现TortoiseSVN的覆盖图标消失了,打开资源管理器,怎么都看不到已经同步的文件夹显示已同步图标。到SVN的设置面板,也找不到任何相关的解决办法。
不过有一天,使用DW浏览文件,定位到文件,这时候发现了已同步图标。这就更让人疑惑了,但是最起码证明,图标文件没有丢失,只是因为某种原因,没办法显示出来,那就有可能是软件冲突了。
可是近期七七八八装了不少东西,到底是哪个的原因呢?
不明原因,所以,百度google之,发现还是挺多人遇到这情况的,现摘录如下:
“开始以为是TortoiseSVN坏了,于是重装,但结果还是一样。于是找了好多资料,终于发现症结所在--原来是Windows对覆盖图标类型的数据限制的原因。Windows最多只允许15个覆盖图标,它自己又用了几个,结果给用户用的就11个左右了(这个限制一直都Windows 7都没有放宽,真不知微软是怎么想的)。TortoiseSVN标准会使用7个(普通图标、已修改图标、冲突指示图标、已删除图标、新增文件图标、忽略图标、未版本化图标等),这样剩下可用的就少之又少了。如果再安装了网盘软件(如:快盘,Dropbox等),那就更惨了,它们各自又会使用3个左右的覆盖图标,这样,覆盖图标当然远远不够用了。
那么,覆盖图标的设置保存在Windows的哪个地方呢?如果有超过11个的覆盖图标,Windows如何选择显示哪些屏蔽哪些呢?下面继续…
所有应用程序的覆盖图标都需要在注册表“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers”下面增加一个项目,当需要显示覆盖图标时,Windows会按照项目名称的字母顺利依次查询在这些项目里所指示的接口,以检测是否有覆盖图标,当检测到11个有效的接口后,Windows就会自动停止继续向下检测,这样,后来的覆盖图标就不会显示了。
知道原理了,解决问题就好办了。我们可以分析一下在这个注册表项下的所有项目,看哪些覆盖图标是需要的,哪些是不需要的,把不需要的项目的名称改一下,前面加个“z”,这样,这个表项按字母排序就自动排到最后面了。哪些是不需要的呢?比如:网盘的“正在同步图标”就没什么用,可以去掉。其它的,可以自己看着办了。
如果你进行调整后,把TortoiseSVN的所有覆盖图标全部提前,但TortoiseSVN仍然不会显示忽略图标、未版本化图标。为什么呢?研究了TortoiseSVN的源代码才发现,原来TortoiseSVN会自己分析在ShellIconOverlayIdentifiers中注册的覆盖图标数,如果注册了太多,TortoiseSVN会自动屏蔽一些无关紧要的图标,目的是让别人软件的覆盖图标尽可能有机会显示。也就是说,如果你希望,显示TortoiseSVN的这些它自己认为“无关紧要”的覆盖图标,你需要删除一些别的程序的图标,把覆盖图标的总数减小到13个以下,这时,TortoiseSVN才会正常显示忽略图标、未版本化图标等无关紧要的图标。”
----------------------------------------------------------------------------------分割线---------------------------------------------------------------------------------------------
对于我自己机器, 看了下注册表,ShellIconOverlayIdentifiers的目录树如下:
!!!BoxFlashSyncExt1
!!!BoxFlashSyncExt2
!!!BoxFlashSyncExt3
!!!BoxFlashSyncExt4
!IconOverlay_Conflict
!IconOverlay_ForbidSync
!IconOverlay_LargeFile
!IconOverlay_Synced
!IconOverlay_Syncing
.KLive_OverlayIcon_ForbidSync
.KLive_OverlayIcon_Synced
.KLive_OverlayIcon_Syncing
1TortoiseNormal
2TortoiseModified
360UDiskGuard Icon Overlay
3TortoiseConflict
4TortoiseLocked
5TortoiseReadOnly
...
...
怪不显示不出SVN的图标呢,在SVN要overlay icon前面有好多个野蛮的icon,酷盘、115 、快盘三个网盘也是想尽了千方百计让自己的overlay icon能够被显示出来。居然连感叹号,空格都用上了。
酷盘对应的overlayicon为:
!!!BoxFlashSyncExt1
!!!BoxFlashSyncExt2
!!!BoxFlashSyncExt3
!!!BoxFlashSyncExt4
115 对应的overlayicon为:
!IconOverlay_Conflict
!IconOverlay_ForbidSync
!IconOverlay_LargeFile
!IconOverlay_Synced
!IconOverlay_Syncing
快盘对应的overlayicon为:
.KLive_OverlayIcon_ForbidSync
.KLive_OverlayIcon_Synced
.KLive_OverlayIcon_Syncing
既然知道原理了,那就挨个把网盘干掉吧。
其中:115网盘属于半绿色安装,因为只有Sync115Ext.dll (在C:\Users\用户名\AppData\Roaming\115\Box) 被注册,它正在shell overlay icon对应的dll,因此,只需要将它反注册一下就可以了:regsvr32 /u Sync115Ext.dll。
经过卸载,ShellIconOverlayIdentifiers的目录树终于干净了,目录树如下:
1TortoiseNormal
2TortoiseModified
360UDiskGuard Icon Overlay
3TortoiseConflict
4TortoiseLocked
5TortoiseReadOnly
...
分享到:
相关推荐
svn图标消失解决 http://blog.csdn.net/zlc819240815/article/details/53517680
TortoiseSVN的全部图标文件,方便给CVS提供图标。 TortoiseSVN ICons SVN 图标全集
操作失误导致桌面图标变成SVN图标,运行此文件即可解决!
svn图标的含义.docx
删除SVN 批处理,清理SVN文件 ,删除SVN图标
eclipse插件svn图标详细含义(全)
SVN图标不显示解决方案,可能是图标资源被其他软件、程序占用,可能是其他问题,本文都有介绍,及解决方案
版本控制
svn把代码当道到桌面上 发现桌面其他软件图标 被svn感染 可用此脚本在桌面上执行下 去除svn占用
eclipse中的svn插件图标和vs中的snv插件图标有点不同,所以用惯了vs|svn插件,对eclipse的图标有点弄不清楚,网上有很多介绍,这里踩在前人的肩膀上拿来主义,放在这里,供自己查看和分享
自己编写的Tortoise SVN CVS 图标修复软件,可以恢复资源管理器上的SVN,CVS图标显示问题。
Eclipse中svn项目会出现label装饰,但今天消失了! svn label装饰,附件中有图示; 并且在Label Decoration,选择SVN后,问题依然存在
软件开发SVN的使用方法和注意事项-Eclipse中SVN图标含义
软件开发SVN的使用方法和注意事项-Eclipse中SVN图标含义实用.pdf
svn图标意义
主要是对svn的配置 内容整理介绍.myEclipse svn配置及使用图标的说明
svn 同步图标含义 全 所有图标含义 svn 同步图标含义 全 所有图标含义
SVN版本库备份与恢复文档(是doc文档)
如果你的SVN中的文档被误删除了,那么你可以通过下面的方法进行恢复。 1.首先我们在文件夹内创建一个演示用的文档。 2.在文件夹内单击鼠标右键点击“SVN commit...”,弹出commit to确认对话框,选择要提交的文件...
svn图标不显示的解决方案.docx