2010-05-11 104 views
0

我已经编写了一个资源管理器扩展,用于在预览窗格中显示我的自定义文件格式。这在Windows 7中运行良好,但在Vista中似乎不起作用。同一个DLL处理缩略图和预览窗格。事情的缩略图方面在Vista和Windows7中都可以使用。自定义PreviewPane - 适用于Windows7,不适用于Vista

将日志添加到我的代码中,Vistas仅为缩略图类调用我的DllGetClassObject函数,而不是预览处理程序类。

有没有什么明显的Vista调用COM DLL时,与Windows7不同?

这里是我加入到注册表中的值:

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和x64一样,都是我的Vista和Win7操作系统。 DLL是用C++编写的,没有ATL。

谢谢任何​​帮助, 丹。

回答

1

该reg看起来不错,只有缺省的progid缺失。 Win7确实已经记录了PreviewHandlers键位置的替代行为。不幸的是,SDK文档没有说明Vista需要什么。 Vista时间magazine article使用HKLM而不是HKCU。我敢打赌就是这样。

+0

太棒了!这是HKCU-> HKLM。简直不敢相信这件事!谢谢! – Dan 2010-05-11 15:09:05

相关问题