将覆盖图标设置为 运行 资源管理器而不重启

set overlay Icon to running explorer without restart

我想根据某些状态更改文件的覆盖图标。 如果文件状态改变,覆盖图标应该改变。 例如:如果文件被锁定,则应设置与锁定相关的覆盖图标,如果释放,则应设置不同的覆盖图标。

设置覆盖图标需要实现一个IShellIconOverlayIdentifier interface

registry 中写入注册表项以进行 COM dll 注册,另外 registry 需要覆盖图标标识符注册,见下文:

Key:"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\TestShellIconOverlayIdentifiers"
with default value [CLSID_of_registered_DLL]

在此之后,一些函数需要在注册时调用,以便在已有 运行 个资源管理器实例的系统内存中插入覆盖图标,为此我在下面 post 找到了答案。 How can I programmatically refresh Windows Explorer?

参见 TortoiseCVS - ShellUtils.cpp

上的函数 "bool RebuildIcons()"