在Windows 7下,我似乎无法让图标显示出来,我真的很怀念Windows XP的这一点。

如何解决?


当前回答

Windows只能显示有限数量的覆盖图标(总共15个,在Windows之后有11个)。像Office Groove, Dropbox, Mozy, Carbonite等程序将劫持一堆11种可能的覆盖图标(如果微软增加这些图标的数量,因为使用它们的应用程序的数量似乎越来越多)…

你可以看到设置了哪些覆盖,并在注册表中更改它们(自担风险):

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

If you are using TortoiseCVS (and have nothing else using overlay icons), you will get a couple of TortoiseSVN Icons, and all of your TortoiseCVS icons. This is because the overlay icons are used in alphabetical order. Again, at your own risk (editing the registry may blow up your computer, yada, yada, yada -- and if you are reading Stack Overflow and using Windows and haven't edited the registry, you are a rare beast indeed), feel free to rename them (I suggest putting numbers in front of the ones you want to use and "z_"'s prefixed to the ones you don't need). The TortoiseSVN Shell extensions are nicely named so you know what they do, the TortoiseCVS extensions are not. After looking through the source code, I found the pertinent information:

TortoiseCVS0 -在CVS TortoiseCVS1 -不在CVS中 TortoiseCVS3 -冲突 TortoiseCVS4 -在CVS只读 乌龟ecvs5 -忽略 乌龟ecvs6 -新增 TortoiseCVS7 -删除 龟龟ecvs8 -锁定

其他回答

克里斯·埃里克森说得对,给他投票吧。在我的案例中,问题是安装TFS powertools,它添加了资源管理器外壳集成,就像TSVN和TCVS一样。它增加了另外5个叠加。因为它们的前缀是Tfs*,所以它们优先于Tortoise*。我也只是把Tfs的东西加上了z_和TSVN的覆盖回来了。不过不需要重启/注销,只需杀死explorer.exe并重新启动它。

我的主要目的是为TortoiseCVS制作图标。很多建议对我不起作用:卸载,重新安装;通过重命名重新注册;重新启动多次。但是真正起作用的是安装TortoiseSVN。这使得TortoiseCVS的图标起作用。我查了注册表。SVN安装将数字放在图标名称前面:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers]
1TortoiseNormal
2TortoiseModified
3TortoiseConflict
4TortoiseLocked
5TortoiseReadOnly
6TortoiseDeleted
7TortoiseAdded
8TortoiseIgnored
9TortoiseUnversioned
Groove Explorer Icon Overlay 1 (GFS Unread Stub)
Groove Explorer Icon Overlay 2 (GFS Stub)
Groove Explorer Icon Overlay 2.5 (GFS Unread Folder)
Groove Explorer Icon Overlay 3 (GFS Folder)
Groove Explorer Icon Overlay 4 (GFS Unread Mark)
SharingPrivate
TortoiseAdded
TortoiseConflict
TortoiseDeleted
TortoiseIgnored
TortoiseLocked
TortoiseModified
TortoiseNormal
TortoiseReadOnly
TortoiseUnversioned
zEnhancedStorageShell
zOffline Files
zSkyDrivePro1 (ErrorConflict)
zSkyDrivePro2 (SyncInProgress)
zSkyDrivePro3 (InSync)

我通过使用Sysinternals中的Autoruns解决了这个问题。

运行时运行 在“资源管理器”选项卡中,向下滚动到“OverlayIconIdentifier”和“ShellOverlayIconIdentifier”条目 取消不想要的覆盖(如大多数任何Dropbox, SkyDrive等) 重启资源管理器

有时候你只需要去TortoiseSVN的“设置”,关闭图标,点击“应用”,再打开。

Windows开始->所有程序->TortoiseSVN->设置

可能出现的问题和解决方案

Windows限制可用的覆盖图标的数量,参考Kris Erickson的回答。 TortoiseSVN设置不当,参考Ralph Cowling的回答。 从早期版本(1.6.10之前)更新的已知错误,请参阅这里。 TortoiseSVN并不是为所有用户安装的,尝试像下面这样用cmd安装,如果下面三个解决方案都不工作,我相信这个方法会挽救你的生命。


rem Set your own path.
set TOOL_ROOT=d:\Tools\TortoiseSVN-1.6.13.20954-win32-svn-1.6.16\tortoisesvn_1.6.16.21511
set PACKAGENAME=TortoiseSVN-1.6.16.21511-x64-svn-1.6.17.msi
set TOOL_INSTALLROOT="c:\Program Files (x86)\TortoiseSVN"

msiexec /i "%TOOL_ROOT%\%PACKAGENAME%" INSTALLDIR=%TOOL_INSTALLROOT% ALLUSERS=1 ARPSYSTEMCOMPONENT=1 RebootYesNo=No REBOOT=ReallySupress /qb-

set ret=%ERRORLEVEL%

rem The installer seems to return same values as MSI
rem These codes mean that the product is properly installed, even though the code is not zero.
rem 1641 ERROR_SUCCESS_REBOOT_INITIATED
rem 3010 ERROR_SUCCESS_REBOOT_REQUIRED
if %ret% EQU 1641 set ret=0
if %ret% EQU 3010 set ret=0
if %ret% GTR 0 exit %ret%