有没有办法让程序共享Windows资源管理器的图标叠加?

11

Windows系统只允许15个图标覆盖,这一点大家都已经耳熟能详了。我知道如何重命名注册表项以显示我绝对需要的覆盖。但是我想知道是否有更好的方法。

我对注册表编辑不熟悉,对于Windows内部机制和覆盖实际上是如何被请求/传送的知之甚少。因此,我不确定这些覆盖实际上是如何工作的...但是我使用的具有覆盖的程序(TortoiseSvn、Box、Google Drive)基本上都是做同样的事情。一般来说,它们会将本地文件的状态与云端或服务器上文件的状态进行比较。出于这个原因,许多这些覆盖似乎可以逻辑上共享。为什么BoxSynced、GoogleDriveSynced和Tortoise1Normal不能使用相同的图标呢?

所以我的问题是:有人知道如何操作注册表来合并某些图标覆盖吗?或者也许有什么工具或实用程序可以实现类似“共享覆盖集”这样的设置吗?


我认为仅通过修改注册表没有任何方法可以实现这一点,但可能可以使用一个小型实用程序。 (我认为,如果它具有更高的优先级,它可以处理系统的覆盖请求,然后将它们发送到其他覆盖处理程序,并适当地报告回来。 GUI可以允许将多个程序的叠加映射到单个图标。)如果您修改问题以包括其他类型的解决方案,那么我会添加赏金。 - BeingQuisitive
我编辑了这个问题。我所做的修改相当小,不像你的评论那样具体。我还是新手,仍在努力掌握最佳的格式化这种问题的方法。如果您认为我应该进行其他编辑,请告诉我。 :) - Josh
1个回答

4
TortoiseOverlays是一个可以实现此目的的桥接程序。它旨在在Tortoise客户端(SVN、git、Hg)之间共享图标覆盖,但只要您能将文件同步状态与给定版本控制图标之一匹配起来,它也可以被重新用于执行相同的操作(如果TortoiseOverlays可以扩展以允许更多可能的图标,则会更好)。
说明:
  1. 安装TortoiseOverlays。它可以直接安装或随Tortoise客户端一起安装。
  2. 确保TortoiseXxxxx键首先出现在[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers]中,方法是在前面添加几个空格。
  3. 向[HKLM\SOFTWARE\TortoiseOverlays]添加适当的键以确定映射关系。

您可以通过阅读 TortoiseOverlays说明并确定从叠加键映射到的状态来添加适当的键(通常很容易根据键名确定,但对于Dropbox和OneDrive,请参见此处此处)。以下是我为Dropbox、Google Drive、OneDrive和OwnCloud制定的适用于我的示例。可以将适当的部分保存到.reg文件中并导入它们。

    ; GoogleDriveSynced
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Normal]
    "GoogleDrive"="{81539FE6-33C7-4CE7-90C7-1C7B8F2F2D40}"

    ; GoogleDriveBlacklisted
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Ignored]
    "GoogleDrive"="{81539FE6-33C7-4CE7-90C7-1C7B8F2F2D42}"

    ; GoogleDriveSyncing
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Modified]
    "GoogleDrive"="{81539FE6-33C7-4CE7-90C7-1C7B8F2F2D41}"

    ;OCError
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Conflict]
    "OC"="{0960F090-F328-48A3-B746-276B1E3C3722}"

    ;OCErrorShared
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Conflict]
    "OCShared"="{0960F091-F328-48A3-B746-276B1E3C3722}"

    ;OCOK
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Normal]
    "OC"="{0960F092-F328-48A3-B746-276B1E3C3722}"

    ;OCOKShared
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Normal]
    "OCShared"="{0960F093-F328-48A3-B746-276B1E3C3722}"

    ;OCSync
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Modified]
    "OC"="{0960F094-F328-48A3-B746-276B1E3C3722}"

    ;OCSyncShared
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Modified]
    "OCShared"="{0960F095-F328-48A3-B746-276B1E3C3722}"

    ;OCWarning
    ;"OC"="{0960F096-F328-48A3-B746-276B1E3C3722}"

    ;OCWarningShared
    ;"OCShared"="{0960F097-F328-48A3-B746-276B1E3C3722}"

    ;DropboxExt1 - "Synced!"
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Normal]
    "Dropbox"="{FB314ED9-A251-47B7-93E1-CDD82E34AF8B}"

    ;DropboxExt2 - "Sync in progress"
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Modified]
    "Dropbox"="{FB314EDA-A251-47B7-93E1-CDD82E34AF8B}"

    ;DropboxExt3 - "Synced! - Locked"
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Normal]
    "DropboxLock"="{FB314EDD-A251-47B7-93E1-CDD82E34AF8B}"

    ;DropboxExt4 - "Sync in progress - Locked"
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Modified]
    "DropboxLock"="{FB314EDE-A251-47B7-93E1-CDD82E34AF8B}"

    ;DropboxExt5 - "Sync not happening" (red x)
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Conflict]
    "Dropbox"="{FB314EDB-A251-47B7-93E1-CDD82E34AF8B}"

    ;DropboxExt6 - "Sync not happening - Locked" (red x + Lock)
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Conflict]
    "DropboxLock"="{FB314EDF-A251-47B7-93E1-CDD82E34AF8B}"

    ;DropboxExt7 - "A file or folder isn't syncing" (gray minus)
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Ignored]
    "Dropbox"="{FB314EDC-A251-47B7-93E1-CDD82E34AF8B}"

    ;DropboxExt8 - "A file or folder isn't syncing - Locked" (gray minus+Lock)
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Ignored]
    "DropboxLock"="{FB314EE0-A251-47B7-93E1-CDD82E34AF8B}"

    ;OneDrive1 - "Not syncing" (red x)
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Conflict]
    "OneDrive"="{BBACC218-34EA-4666-9D7A-C78F2274A524}"

    ;OneDrive2 - "Synced (Shared)"
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Normal]
    "OneDriveShared"="{5AB7172C-9C11-405C-8DD5-AF20F3606282}"

    ;OneDrive3 - "Syncing (Shared)"
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Modified]
    "OneDriveShared"="{A78ED123-AB77-406B-9962-2A5D9D2F7F30}"

    ;OneDrive4 - "Synced"
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Normal]
    "OneDrive"="{F241C880-6982-4CE5-8CF7-7085BA96DA5A}"

    ;OneDrive5 - "Syncing"
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Modified]
    "OneDrive"="{A0396A93-DC06-4AEF-BEE9-95FFCCAEF20E}"

    ;BoxSyncSynced
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Normal]
    "BoxSync"="{c89f9943-8f58-3eca-bd55-a658f53b2f48}"

    ;BoxSyncNotSynced
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Modified]
    "BoxSync"="{5ea95e3d-3e46-3812-b03c-49785fa67d41}"

    ;BoxSyncFileLocked
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Locked]
    "BoxSync"="{2a607da5-abe8-358e-a881-c0f5faf2d3a5}"

    ;BoxSyncFileLockedByOther
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Modified]
    "BoxSync"="{f7d2951f-0b6b-346c-99ec-69cffc30a364}

    ;BoxSyncProblem
    [HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseOverlays\Conflict]
    "BoxSync"="{a88b7184-bfa1-3d14-8efb-2225df9699bc}"

以下是我整理的注册表键需要注意的几点:

  • 我将“错误”映射为“冲突”,将“同步”映射为“已修改”。OwnCloud的“警告”没有明显的匹配项,因此没有映射到任何内容。
  • 许多程序有额外的图标,与主要图标不同之处在于我忽略的特征,因此我将这对图标映射到相同的图标中。这些包括OwnCloud的“共享”,Dropbox的“锁定”和OneDrive的“共享”对。
  • 这些键取决于CLSIDs,可能会在文件同步程序的版本之间发生更改。

这个完美地运行了。由于乌龟已经安装好了,我所要做的就是进行注册表编辑。我应该编辑您的答案以添加BoxSync特定的键吗? - Josh

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