Когда система перезагружается в 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 ответов

Другие вопросы по тегам