Пользовательские превзошествия - Работы в Windows7, не в Vista

StackOverflow https://stackoverflow.com/questions/2810212

Вопрос

Я написал расширение Explorer, чтобы отобразить мой пользовательский формат файла в панели предварительного просмотра. Это работает нормально в Windows 7, но не работает в Vista. Та же DLL обрабатывает как миниатюры и панель предварительного просмотра. Миниатюры вещей работают как в Vista, так и в Windows7.

Добавление журналов в мой код, Vistas вызывает только функцию My DllgetClassObject для класса миниатюр, а не класс обработки предварительного просмотра.

Есть ли что-то очевидное, что Vista делает по-разному к Windows7 при звонке COM DLL?

Вот значения, которые я добавляю в реестр:

HKEY_CLASSES_ROOT\\.<myext>\\(default) = "<myext>.Thumbnail.Handler.1"
HKEY_CLASSES_ROOT\\<myext>.Thumbnail.Handler.1\\ShellEx\\{8895b1c6-b41f-4c1c-a562-0d564250836f}\\(default) = "<myguid>"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\(default) = "<myext> Preview Handler"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\DisplayName = "@ExplorerPreviewHandler.dll,-101"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\Icon = "@ExplorerPreviewHandler.dll,201"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\AppID = "{6d2b5079-2f0b-48dd-ab7f-97cec514d30b}"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\InProcServer32\\(default) = "<path to my dll>"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\InProcServer32\\ThreadingModel = "Apartment"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\InProcServer32\\ProgID = "<myext>.Thumbnail.Handler.1"
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\PreviewHandlers\\<myguid> = "<myext> Preview Handler"},

Учитывая, что мой dllgetclassobject не вызывается, я предполагаю, что проблема должна быть чем-то связана с тем, что я нахожусь в реестре? Я знаю, что экспорт DLL в порядке, так как работает для миниатюр в Vista и Win7, и работает для панели предварительного просмотра в Windows7.

DLL IS X64, как и моя Vista, так и Win7 OSS. DLL написана в C ++ без ATL.

Спасибо за любую помощь с этим, Дэн.

Это было полезно?

Решение

Рег выглядит хорошо, только Progid по умолчанию отсутствует. Win7 задокументировал альтернативное поведение для определения местоположения ключа PreviewHandlers. К сожалению, Docs SDK не говорят, что требует Vista. ВАСТЕ ВРЕМЯ статья в журнале использует HKLM вместо HKCU. Могу поспорить, вот и все.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top