Windows 7下TortoiseSVN图标无法显示

472

我无法在Windows 7下显示图标,而我非常怀念这个功能(在Windows XP中是有的)。

如何解决?


3
请阅读所有答案... Ralph Cowling 和 Johan Kirsh 的答案对我很有帮助。 - Gopi
这个更简单的解决方案对我有用:https://dev59.com/Cmsy5IYBdhLWcg3w-zB4#8186529 - Darren Parker
31个回答

555

Windows 只能显示有限数量的覆盖图标(15个总共,其中11个被 Windows 使用)。诸如 Office GrooveDropboxMozyCarbonite 等程序将占用一堆可能的11个覆盖图标(如果 Microsoft 增加了这些图标的数量,将会非常好,因为使用它们的应用程序数量似乎在不断增加)…

您可以在注册表中查看设置的覆盖图标,并更改它们(自己承担风险):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellIconOverlayIdentifiers

如果您正在使用 TortoiseCVS(并且没有其他程序使用覆盖图标),则会获得一些 TortoiseSVN 图标和所有 TortoiseCVS 图标。这是因为覆盖图标按字母顺序使用。再次提醒,自己承担风险(编辑注册表可能会让您的计算机崩溃,等等——如果您正在阅读 Stack Overflow 并使用 Windows,而没有编辑过注册表,则是一个罕见的存在),请随意重命名它们(我建议在您想要使用的图标前面放置数字,并在您不需要的图标前加上“z_”前缀)。TortoiseSVN Shell 扩展名被很好地命名,所以您知道它们是做什么的,TortoiseCVS 扩展名则没有。研究了源代码后,我找到了所需的信息:

  • TortoiseCVS0 - 在CVS中
  • TortoiseCVS1 - 不在CVS中
  • TortoiseCVS3 - 冲突
  • TortoiseCVS4 - 在CVS中只读
  • TortoiseCVS5 - 已忽略
  • TortoiseCVS6 - 已添加
  • TortoiseCVS7 - 已删除
  • TortoiseCVS8 - 已锁定

27
这对我来说是个解决方案。我先安装了Mozy和DropBox并在“ShellIconOverlayIdentifiers”键下简单地为每个条目添加前缀“z_”。然后我注销再重新登录,Tortise覆盖图标就重新出现了。我使用的是64位版本的Win7和TortiseSVN。 - Chris Staley
97
无需重新启动或注销,只需结束并运行explorer.exe即可。 - Leigh Riffel
10
看起来Tortoise已经自带了这个解决方法:它的标识符前缀是数字。然而,我仍然看不到它们(尽管我可以看到Dropbox的图标...)。 - Dmitry Selitskiy
40
刚刚我遇到了这个问题,看起来TortoiseSVN开始了一场军备竞赛:微软Skydrive的图标以空格开头(!):“ Skydrive1”,Box.com的图标以“000”开头,Avast!将其覆盖命名为“00Avast”等。 - Chris R. Donnelly
9
15个图层的限制在Windows 8.1中仍然存在。 :/ - CAD bloke
显示剩余23条评论

219

停!

在执行Kris Erickson(非常好的)回答或以下列出的类似过程之前,请考虑一些事情...

你是否在网络驱动器上?

如果是,请进入Tortoise SVN设置(右键单击任何文件夹> TortoiseSVN>设置),然后转到“图标叠加”

确保您已经勾选了像图片中所示的“网络驱动器”:

alt text

默认情况下,在新的Tortoise安装中,网络驱动器没有添加图标。

这对我们解决了问题。如果对于您来说失败了,那么显然您可以按照此处列出的(稍微)更复杂的解决方案进行操作。


1
你解决了我烦人的问题,真是太棒了。在这之后停止TSVNCache服务可能会有用,这样图标就能正确加载了。 - Marcos Placona
1
我将我的 SVN 放置在 Mac 上的 Win7 Fusion 虚拟机中,仓库通过 Fusion 共享选项位于主机文档文件夹中。这解决了我的图标无法显示的问题。 - WMIF
太好了!TrueCrypt卷似乎被处理为网络驱动器。 - Martin Hennings
类似于 WMIF,当我使用 Parallels 上的 OS X 驱动器时,它解决了我的问题。 - TechSavvySam

121

同时不需要重新启动电脑,而是重启 explorer.exe:

  1. 按下 Ctrl+Shift+Esc
  2. 点击进程选项卡。
  3. 右键点击explorer.exe
  4. 选择结束进程
  5. 点击 结束进程 按钮。
  6. 点击应用程序选项卡。
  7. 右键点击。
  8. 点击新建任务(运行)
  9. 打开设置为:explorer
  10. 点击确定

Windows Explorer已经重新启动,TortoiseSVN图标重新出现。


右键单击任务栏并点击“任务管理器”也会打开任务管理器。 - evilspoons
你也可以通过命令提示符执行以下操作:
  1. taskkill /f -im explorer.exe
  2. start explorer.exe
- chjarder
5
您可以优雅地完成这个操作。打开开始菜单,然后在右键点击时按住ctrl+shift键;"退出资源管理器" 将作为选项出现。但您仍需要打开任务管理器(例如使用ctrl+alt+delete)以重新启动它!这是在Windows 7上的方法;在Windows 8上,我认为您仍然可以通过在任务栏上按住ctrl+shift+右键来完成此操作。 - Jim Oldfield
2
在Windows 10中,任务管理器中有一个“重启”选项可用于Windows资源管理器。对我来说立即生效。 - codah
1
这个解决方案过于复杂了,虽然知道也是好的。只需要注销 Windows 然后重新登录即可。只需要几秒钟,而且容易记住。这是在(缓慢的)重启和执行多个步骤之间的一个折中方案 :) - ToolmakerSteve
显示剩余3条评论

68

我也在升级到Windows 7 x64上的1.6.8版本后失去了叠加层。我只安装了x64版本,没有安装32位版本。为了修复这个问题,我使用原始安装程序运行修复操作,然后重新启动。之后,叠加层正常显示。


42
来自TortoiseSVN首席开发人员(2010-04-17)的消息:“在更新到1.6.8之后,您可能需要进行修复安装(重新启动安装程序,然后选择“修复”)。否则,覆盖图标可能无法正确显示。对造成的不便表示抱歉。” - bitFlipper
如果修复安装无效,只需按照以下步骤重复执行:1)卸载 2)重新启动 3)安装 4)重新启动,直到问题得到解决。 - Álvaro González
在进行任何注册表编辑之前,请务必尝试此方法。在修复TortoiseSVN 1.7.1时,如果您允许其在修复之前关闭应用程序,则无需重新启动。我有一个新的Windows 7 32位系统,并在安装Subclipse 1.8.2后安装了TortoiseSVN 1.7.1。(也许安装顺序引起了问题,因为我的同事反过来做并没有出现问题。)TortoiseSVN图标未显示在任何受源代码控制的文件夹中,除非我将它们放入回收站(什么鬼?)。只需要进行一次修复即可解决问题。 - hotshot309
我在Windows 8.1和Tortoise SVN 1.8.1上遇到了同样的问题。从TSVN 1.8.1更新到1.8.4没有帮助,问题仍然存在。一旦安装了1.8.4版本,重新运行安装程序并选择修复选项即可解决我的问题。 - icc97

41

我使用来自 Sysinternals 的 Autoruns 工具 解决了它

  1. 运行 Autoruns 工具
  2. 在“Explorer”选项卡中,向下滚动到“OverlayIconIdentifier”和“ShellOverlayIconIdentifier”条目
  3. 取消勾选不需要的覆盖图标(例如大多数 Dropbox、SkyDrive 等)
  4. 重新启动 Explorer.exe

Autoruns screenshot showing Overlay Icons entries


2
我尝试了上面的每一个答案,但是它们都没有起作用。然后我下载了Autoruns并进行了一些设置,最终图标显示出来了!非常感谢你! - missingcat92
2
正如davido所说“打开regedit是很麻烦的事情”,Autoruns可以快速地启用/禁用覆盖。一旦SkyDrive覆盖被禁用,Tortoise Git/SVN就会再次显示所有熟悉的覆盖。我还使用它来禁用其他一些不必要的覆盖(例如DropDox)。 - Frelling
1
这对我非常有效。但是几周后,Dropbox又自己回到了最前面。所以我不得不重新应用这个答案。标记为将来参考。 - Valamas
2
这是一个更好、更优雅的解决方案。 - user585968

21
我和提问者遇到了同样的问题:Win 7(x64),TortoiseSVN(x64)和DropBox(x86)。从其他答案中得到了所有信息。我在这台计算机上只安装过x64版本的TSVN。
在我的情况下,TSVN和DropBox是我在操作系统安装的当天安装的,覆盖物一直正常工作,直到几天前。我没有做任何关于更改应用程序设置的事情,以导致它们停止工作。
以下是在出现问题后我的图标覆盖注册表部分中的内容(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellIconOverlayIdentifiers):
1. DropboxExt1 2. DropboxExt2 3. DropboxExt3 4. EnhancedStorageShell 5. Offline Files 6. SharingPrivate 7. TortoiseAdded 8. TortoiseConflict 9. TortoiseDeleted 10. TortoiseIgnored 11. TortoiseLocked 12. TortoiseModified 13. TortoiseNormal 14. TortoiseReadOnly 15. TortoiseUnversioned
我验证了仅与前11个条目对应的覆盖显示在资源管理器中。当我通过在某些条目开头添加“z”来修改上述条目的顺序时,再次只显示前11个覆盖(根据更新后的顺序)。
有了以上的信息,我就有了解决问题所需的一切(重命名或删除条目,使我想要工作的TSVN条目在前11个列表内)。下面是关于为什么突然发生这种情况的疑问。我知道基于之前几天工作的叠加图层,1-3、7-9、12-13这些键在列表中都小于或等于11(我不确定叠加图层#14是否曾经工作过,因为我从来没有文件处于只读状态。#15从未在此计算机上运行,所以我知道它从未进入前11名)。我还假设TSVN密钥块一起上下移动,因此它们被向下推了两个或三个位置(*见下文)。这意味着在DropBox和TSVN块之间添加了2-3个项目。现在有的三个是Windows添加的,我认为它们会在操作系统安装后立即出现。
列表中的15个覆盖层是否在运行时确定?看起来覆盖处理程序有时可能会告诉Windows shell没有要添加到列表中的图标。可能是我几天前弄乱了与文件共享和文件加密相关的某些设置,导致4-6处的某些项变为“已激活”,并将SVN的项向下推。
最终,我删除了几个条目并移动了一些,因此我的最终列表如下:
  1. DropboxExt1
  2. DropboxExt2
  3. DropboxExt3
  4. SharingPrivate(我希望它显示出来)
  5. TortoiseAdded
  6. TortoiseConflict
  7. TortoiseDeleted
  8. TortoiseModified
  9. TortoiseNormal
  10. TortoiseReadOnly
  11. TortoiseUnversioned
  12. zOffline Files (我不使用同步中心或“离线文件”,所以我不关心这个)
  13. zEnhancedStorageShell(不太清楚增强存储是什么,我认为我不需要它)

19

这些图标在这里显示正常。你是否使用的是64位的Windows 7以及32位版本的TortoiseSVN?如果是这样,那么它们只会显示在32位资源管理器中(或者在32位应用程序的公共文件夹中)。但是,你可以同时安装32位和64位版本。


对我来说也是一样的 - 我在Windows 7上使用TortoiseSVN没有遇到任何问题。不过,我使用的是32位版本的两者。 - Andy
可能是这个原因,需要下载64位版本并查看。 - Lodle
我在Win7 Ultimate 64位上安装了32位和64位的TortoiseSVN。我可以看到文件夹图标,但是没有文件图标。除了9个TortoiseSVN条目之外,所有注册表条目都已添加“z_”前缀。 - Felipe Alvarez

14

另外两种可能的解决方案:

  1. 关闭TSVNCache.exe,然后重新启动它。在某些情况下,这可以使我的Shell覆盖图标重新出现。

  2. 如果您最近升级了TortoiseSVN的先前版本,则可能需要升级您的工作副本。这可以通过右键单击项目文件夹并从上下文菜单中选择“SVN升级工作副本”来完成。


我曾经遇到过类似的问题,杀掉 TSVNCache.exe 进程帮助我解决了。请不要对 Windows 注册表进行任何操作。 - vidhyadhar
我认为“升级”这个词对于SVN来说有些奇怪,本应该知道它意味着除了版本控制之外的其他东西。感谢第二点:非常好的一点是,在版本之间存在巨大的差距时,元数据可能会发生变化。 - ravemir
我的问题是,由于某种原因,TSVNCache.exe没有运行。我只需启动它,覆盖图标就重新出现了。 - aalazz

13

9

我的桌面图标也消失了,注册表修复也没有用。

这是我找回它们的方法:

  1. 安装最新版本的TortoiseOverlays
  2. 重启 explorer.exe

+1 这对我有用,即使只有一些项目没有显示图标(因此我认为这不是资源管理器受限的覆盖物数量的问题)。 - Tim MB
你有在非固定驱动器上进行的项目吗?TortoiseOverlays 也为网络驱动器等添加了图标。 - Jaspio
1
对我来说,TortoiseOverlays 1.0.15 可以与 Tortoise SVN TortoiseSVN-1.7.11.23600 配合使用,但无法与 TortoiseSVN-1.8.1.24570 配合使用。我花了一个半小时安装/卸载不同的 Tortoise SVN 客户端来解决这个问题。希望我能为其他人节省失去的时间。 - Michael Sobczak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接