Когда система перезагружается в Windows XP, зарегистрированное расширение оболочки обработчика значков dll не загружается explorer.exe

мастера:
Я пытаюсь внедрить dll в explorer.exe через регистрацию расширения оболочки обработчика значков и помещаю файл с указанным именем расширения на рабочий стол.
Он отлично работает в Win7, но не очень хорошо в Windows XP. это явление

  1. когда в первый раз регистрируется расширение, dll вводится успешно.
  2. при перезагрузке системы dll не загружается explorer.exe. но если я создаю новый файл с расширением, его можно загрузить.

Я думаю, причина в том, что на рабочем столе был кеширован значок файла, поэтому не нужно вызывать обработчик иконок, чтобы извлечь значок. так, как я могу запретить рабочему столу кэшировать значок указанного файла.

Большое спасибо за вашу помощь.

Ниже часть моих кодов:
// CShellIcon

HRESULT CShellIcon::GetIconLocation(UINT uFlags, LPWSTR szIconFile, UINT cchMax, LPINT piIndex, UINT* pwFlags)
{
// I inject the dll to subclass the desktop window
SubclassDesktop();

*piIndex = 0;

*pwFlags = GIL_DONTCACHE | GIL_NOTFILENAME | GIL_PERINSTANCE;
return S_FALSE;
}

HRESULT CShellIcon::Extract(LPCTSTR pszFile, UINT nIconIndex, HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize )
{
phiconLarge = NULL;
phiconSmall = NULL;
return S_OK;
}

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]