2011-10-05 10 views
1

我做了外殼擴展(實現IContextMenu,IShellExtInit,IExtractIcon & IPersistFile)使用ATL,「書」。外殼擴展在Windows-Explorer中不起作用,但在其他程序中起作用?

有趣的是,一切都在一些文件經理,如「總指揮官」 &「自由司令」不錯,但在Windows的資源管理器完全失效:


當我右鍵單擊我的在TC(「總指揮官」)註冊的文件(說*.000),擴展工作:我在我的日誌和上下文菜單中看到它:帶有其圖標的條目出現。

但是,如果我使用Win-Explorer,沒有任何反應! 沒有日誌條目出現,上下文菜單中沒有證據 - 什麼都沒有!即使是完整的電腦重啓也無濟於事。

當然,我註冊了ShellEx\MyX\ContextMenuHandlersShellEx\IconHandler鍵,以及在資源管理器中的...\Shell Extensions\Approved\,他們都點到我的CLSID。 我使用Windows 7.

我在這裏錯過了什麼?

+7

64/32位?如果你的操作系統是64位的,那麼資源管理器也是64位的,而且你所有的shell擴展也必須是64位的。看起來目前版本的Total Commander只有32位。 –

+0

@SevaTitov:聽起來不錯。我使用64位操作系統,但編譯和註冊32位應用程序。因此,而不是InprocServer32,我應該爲64位DLL創建什麼關鍵? – Tar

+0

只需編譯64位和regsvr32這個二進制。該註冊表項仍稱爲InprocServer32。 –

回答

0

@SevaTitov回答我的問題,但作爲一個評論,所以對於任何人誰在這個問題上絆倒日後參考:

@SevaTitov:

如果你的操作系統是64位,資源管理器會64位以及所有外殼擴展也必須是64位。貌似總指揮官的當前版本僅32位

有那個東西,Registry Redirector,當你在32位程序的時候,它會隱藏(「重定向」)的64位REG-項,反之亦然。

我很困惑,因爲在我的32位註冊表 - 查看器 - 應用程序中,我可以看到這些鍵,但不知道我只看到註冊表的一部分(64位部分必須用64位註冊表才能看到) bit查看器,如64位Windows機器中的默認regedit.exe)

+2

這不是[只]關於註冊表。 64位資源管理器只能加載64位DLL,因此它絕不可能使用32位外殼擴展。您通常必須爲64位操作系統提供兩個版本的shell擴展,即32位和64位版本的shell擴展以匹配主機進程的位數。 –

相關問題