我有一个ATL C ++进程内COM组件。该组件不供外部使用 - 我只需要在我们的应用程序中使用它。
有一段时间用户将其放入COM +中,这会导致各种奇怪的错误 - “拒绝访问”等等,我想从未听说过。最好的方法是做一些禁止将组件放入COM +的东西,这样它就只能用作进程内服务器。有没有办法做到这一点?
答案 0 :(得分:1)
您是否只实现自己的界面?如果是这样,您应该能够在IDL中将它们标记为“[local]”,然后剥离所有编组信息(类型库,P / S)等模块。
如果没有可用的编组基础,COM +应该无法注册模块。 COM +的拦截机制依赖于强制对象进入远程上下文并进入代理和存根及其相应的各方之间。因此,如果您删除每个编组机会,它就不能拦截您的接口方法。
答案 1 :(得分:1)
防止注册您的模块已完成,然后按照本文Creating COM objects directly from the dll中所述使用您的DLL。