Что ж, я знаю, что уже поздно отвечать на ваш вопрос, но это может дать некоторую подсказку другим или даже вам, если вы еще не можете понять это.
Как правило, вам нужны некоторые общие медиа / структурамежду контекстным меню и обработчиками наложения значков.
У вас может быть карта / хэш, содержащий пути файлов / папок, которые должны иметь значок наложения внутри обработчика наложения значков.Обработчик ищет путь каждый раз, когда запрашивается оболочкой, и возвращает S_OK из IShellIconOverlayIdentifier :: IsMemberOf, иначе возвращает S_FALSE.
Теперь вам нужно найти способ связи, поэтому, когда ваша команда контекстного менюпри запуске он должен отправить путь к файлу / папке потоку списка в обработчике наложения значков, где поток вставляет путь в карту, которую обработчик использует, чтобы определить, следует ли поместить значок поверх запрошенного файла / папки.
Не забудьте реализовать подходящую блокировку на этой общей карте.
Еще одна проблема, вам нужно сделать карту сохраняемой, если вам нужно, чтобы значки оставались неподвижными после перезапуска Windows, где вы могли бы периодически выгружать содержимое карты в файл на диске и обновлять его каждый раз, когдаоболочка запускается.