2010-06-29 297 views
2

我創建了一個上下文菜單dll(C++ COM DLL)來顯示iconoverlays(使用IShellIconOverlayIdentifier接口)。要顯示iconoverlays最初我已重新啓動瀏覽器。如果系統重新啓動,要顯示圖標疊加層,我需要手動註冊dll並重新啓動資源管理器。DLL註冊和取消註冊

有什麼辦法可以在瀏覽器啓動前註冊我的com DLL。 ??

此外,如果我卸載我的應用程序DLL不能被刪除。要刪除dll,我需要停止使用我的dll的資源管理器和其他應用程序(例如,thunderbird,visual studio),然後取消註冊dll。然後只有我能夠刪除該Dll。這是正確的嗎?或者我能做的其他事情。

在此先感謝。

回答

3

我想知道爲什麼你必須在每次系統重啓時註冊你的DLL。 另一方面,您必須重新啓動explorer.exe和相關程序以使更改(特別是由shell擴展完成)生效纔是正常的。

此外,您在刪除時遇到的beahivour是您想要刪除外殼擴展DLL時必須經歷的標準過程。

+0

也就是說,因爲程序會自動保存其Windows下的文件句柄。 – Andreas 2010-06-29 09:16:34

0

您可能想要使用自注冊DLL。它們包括將自己存儲在操作系統註冊表中所需的信息,並將自動存儲在您的計算機上,並在需要時可以訪問。

詳細解釋可以在這裏找到:Self-Registration (COM)