Я создал ярлык (.lnk) на рабочем столе, используя интерфейс IShellLink, аналогичный коду, описанному внизу эта страница.
Поэтому я предположил, что для удаления этого ярлыка я мог бы просто позвонить Удалить файл в файле .lnk, но этого явно недостаточно … если я это сделаю, то получу остаток файла ярлыка, который выглядит следующим образом:
Но что интересно, если я просматриваю файлы в папке рабочего стола, например, с помощью проводника Windows, файла .lnk на самом деле там нет. То, что я вижу, это некоторый артефакт на поверхности графического интерфейса рабочего стола.
Любая идея, как удалить ярлык (так, как Microsoft хочет это сделать?)
Хорошо, согласно предложению выше, вот API, который должен быть вызван впоследствии для обновления оболочки:
SHChangeNotify(SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT, pDeletedFilePath, NULL);
Других решений пока нет …