为什么加载程序在注册表中查找我的无注册COM组件



我已经成功地使用免注册COM将COM组件加载到我的.Net进程中。突然发生了一些变化(当我出去吃午饭时,似乎是:-),装载过程停止了。

而在我的COM组件正确加载之前,现在我得到了一个FileNotFoundException。

运行ProcMon来探究发生了什么,我发现加载程序正在注册表中查找CLSID,并发现组件已经注册。然后它查看注册的路径,发现dll不在那里。

有人能告诉我,当我使用免注册COM配置组件时,加载程序为什么要去注册表查找组件吗?我以为清单会优先于注册表,但我找不到任何关于这方面的文档。

事实证明罪魁祸首是Visual Studio宿主进程。当涉及到这一点时,应用程序的清单文件(指定COM依赖项)不会被读取。

因此,简单的解决方案是禁用托管进程。

最新更新