2010-05-11 55 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

相關問題