无论如何让程序共享Windows资源管理器图标叠加?

Jos*_*osh 11 windows tortoisesvn overlay

Windows目前仅允许15个图标叠加这一事实是一个很好的领域.我知道如何重命名注册表项以获取我绝对需要显示的叠加层.但我想知道是否有更好的方法.

我对注册表编辑知之甚少,而且我几乎不了解Windows的内部工作以及如何实际请求/交付覆盖.所以我不确定这些叠加实际上是如何工作的......但我使用的覆盖的程序(TortoiseSvn,Box,Google Drive)基本上都是一样的.一般来说,它们将本地文件的状态与云中或服务器上的文件状态进行比较.出于这个原因,似乎可以在逻辑上共享这些叠加中的许多叠加.为什么BoxSynced,GoogleDriveSynced和Tortoise1Normal都不能使用相同的图标?

所以我的问题是:有没有人知道一种方法来操纵注册表来组合一些图标叠加?或者是否有某种工具或实用程序可以实现类似一组"共享覆盖"的东西?

Bei*_*ive 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}"
Run Code Online (Sandbox Code Playgroud)

我制定的注册表项的一些注意事项:

  • 我已将“错误”映射到“冲突”,将“同步”映射到“已修改”。OwnCloud 的“警告”没有明显的匹配,因此它们没有映射到任何内容。
  • 许多程序都有附加图标,这些图标与主要图标的不同之处在于我忽略了一个特征,因此我将成对的两个图标映射到同一个图标。其中包括 OwnCloud“共享”、Dropbox“锁定”和 OneDrive“共享”对。
  • 这些密钥取决于 CLSID,CLSID 可能会在文件同步程序的版本之间发生变化。