我已经编写了一个资源管理器扩展,用于在预览窗格中显示我的自定义文件格式。这在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。
谢谢任何帮助, 丹。
太棒了!这是HKCU-> HKLM。简直不敢相信这件事!谢谢! – Dan 2010-05-11 15:09:05