Когда система перезагружается в Windows XP, зарегистрированное расширение оболочки обработчика значков dll не загружается explorer.exe
Мастера: я пытаюсь внедрить dll в explorer.exe через регистрацию расширения оболочки обработчика значков и помещаю файл с указанным именем расширения на рабочий стол. Он отлично работает в Win7, но не очень хорошо в Windows XP. это явление
- когда в первый раз регистрируется расширение, dll вводится успешно.
- при перезагрузке системы 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;
}