无论如何让程序共享 Windows Explorer 图标覆盖?
Anyway to have programs share Windows Explorer icon overlays?
Windows 只允许 15 个图标叠加这一事实在这一点上已经过时了。我了解如何重命名注册表项以获得我绝对 需要 可见的覆盖。但我想知道是否有更好的方法。
我对注册表编辑知之甚少,而且我对 windows 的内部工作原理以及覆盖层实际上如何获得 requested/delivered 几乎一无所知。所以我不确定这些叠加层实际上是如何工作的……但是我使用的具有叠加层的程序(TortoiseSvn、Box、Google Drive)基本上都做同样的事情。一般来说,他们将本地文件的状态与云端或服务器上的文件状态进行比较。出于这个原因,这些叠加层中的许多似乎在逻辑上可以共享。为什么 BoxSynced、GoogleDriveSynced 和 Tortoise1Normal 不能全部使用相同的图标?
所以我的问题是:有谁知道操纵注册表来组合一些图标覆盖的方法吗?或者是否有某种工具或实用程序可以实现类似于一组 "shared overlays" 的东西?
TortoiseOverlays 是一个可以达到这个目的的 shim。它旨在跨 Tortoise 客户端(SVN,git,Hg)共享图标覆盖,但它可以重新用于文件同步程序,只要您可以将文件同步状态与给定的状态之一匹配即可版本控制图标(如果 TortoiseOverlays 扩展它以允许更多可能的图标,那就太好了)。
说明:
- 安装 TortoiseOverlays。它可以安装 directly 或随 Tortoise 客户端一起提供。
- 确保 TortoiseXxxxx 键在 [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers] 中排在第一位,方法是多预留几个空格。
- 向 [HKLM\SOFTWARE\TortoiseOverlays] 添加适当的键以确定映射。
您可以通过阅读 TortoiseOverlays instructions and then figuring out which states are mapped to from the overlay keys (this is usually easy given the key names, but for Dropbox and OneDrive see here and here 来添加适当的键。下面我制定了一个适用于 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}"
关于我制定的注册表项的一些注意事项:
- 我已将 "Error" 映射到 "Conflict",将 "Syncing" 映射到 "Modified"。 OwnCloud 的 "Warnings" 没有明显的匹配,因此它们没有映射到任何东西。
- 许多程序都有额外的图标,这些图标在我忽略的特征上与主要图标不同,因此我将这对图标映射到同一个图标。其中包括 OwnCloud "shared"、Dropbox "locked" 和 OneDrive "shared" 对。
- 密钥取决于 CLSID,这可能会在文件同步程序的版本之间发生变化。
Windows 只允许 15 个图标叠加这一事实在这一点上已经过时了。我了解如何重命名注册表项以获得我绝对 需要 可见的覆盖。但我想知道是否有更好的方法。
我对注册表编辑知之甚少,而且我对 windows 的内部工作原理以及覆盖层实际上如何获得 requested/delivered 几乎一无所知。所以我不确定这些叠加层实际上是如何工作的……但是我使用的具有叠加层的程序(TortoiseSvn、Box、Google Drive)基本上都做同样的事情。一般来说,他们将本地文件的状态与云端或服务器上的文件状态进行比较。出于这个原因,这些叠加层中的许多似乎在逻辑上可以共享。为什么 BoxSynced、GoogleDriveSynced 和 Tortoise1Normal 不能全部使用相同的图标?
所以我的问题是:有谁知道操纵注册表来组合一些图标覆盖的方法吗?或者是否有某种工具或实用程序可以实现类似于一组 "shared overlays" 的东西?
TortoiseOverlays 是一个可以达到这个目的的 shim。它旨在跨 Tortoise 客户端(SVN,git,Hg)共享图标覆盖,但它可以重新用于文件同步程序,只要您可以将文件同步状态与给定的状态之一匹配即可版本控制图标(如果 TortoiseOverlays 扩展它以允许更多可能的图标,那就太好了)。
说明:
- 安装 TortoiseOverlays。它可以安装 directly 或随 Tortoise 客户端一起提供。
- 确保 TortoiseXxxxx 键在 [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers] 中排在第一位,方法是多预留几个空格。
- 向 [HKLM\SOFTWARE\TortoiseOverlays] 添加适当的键以确定映射。
您可以通过阅读 TortoiseOverlays instructions and then figuring out which states are mapped to from the overlay keys (this is usually easy given the key names, but for Dropbox and OneDrive see here and here 来添加适当的键。下面我制定了一个适用于 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}"
关于我制定的注册表项的一些注意事项:
- 我已将 "Error" 映射到 "Conflict",将 "Syncing" 映射到 "Modified"。 OwnCloud 的 "Warnings" 没有明显的匹配,因此它们没有映射到任何东西。
- 许多程序都有额外的图标,这些图标在我忽略的特征上与主要图标不同,因此我将这对图标映射到同一个图标。其中包括 OwnCloud "shared"、Dropbox "locked" 和 OneDrive "shared" 对。
- 密钥取决于 CLSID,这可能会在文件同步程序的版本之间发生变化。