2010-06-29 243 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)