我已经写了一个资源管理器扩展在预览窗格中显示我的自定义文件格式。这工作正常,在Windows 7中,但似乎并没有工作在Vista。同样的DLL同时处理缩略图和预览窗格。在Vista和Windows7的事情工作的缩略图侧。

添加日志我的代码,极目远眺只叫我的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是64位,因为都是我的Vista和Win7操作系统。 DLL是用C ++无ATL。

三江源与此任何的帮助, 丹。

有帮助吗?

解决方案

在REG外观okayish,只有默认的progid丢失。 Win7的也有记载替代行为的PreviewHandlers键的位置。不幸的是,SDK文档不说什么Vista要求。 Vista的时间杂志文章用途HKLM代替HKCU。我敢打赌,就是这样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top