我已經編寫了一個資源管理器擴展,用於在預覽窗格中顯示我的自定義文件格式。這在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