我有一个 ATL C++ in-proc COM 组件。该组件不供外部使用 - 我只需要在我们的应用程序中使用它。
有时,用户将它放入 COM+ 中,这会导致各种奇怪的错误——“访问被拒绝”等,我不想听到这些。最好的方法是做一些禁止将组件放入 COM+ 的事情,以便它只能用作进程内服务器。有没有办法做到这一点?
我有一个 ATL C++ in-proc COM 组件。该组件不供外部使用 - 我只需要在我们的应用程序中使用它。
有时,用户将它放入 COM+ 中,这会导致各种奇怪的错误——“访问被拒绝”等,我不想听到这些。最好的方法是做一些禁止将组件放入 COM+ 的事情,以便它只能用作进程内服务器。有没有办法做到这一点?
你只实现你自己的接口吗?如果是这样,您应该能够在 IDL 中将它们标记为“[local]”,然后剥离模块中的所有编组信息(类型库、P/S)等。
如果没有可用的编组基础,COM+ 应该无法注册该模块。COM+ 的拦截机制依赖于强制对象进入远程上下文并进入代理和存根及其对应方之间。因此,如果您删除了所有编组的机会,它应该无法拦截您的接口方法。
阻止注册您的模块已完成,然后按照本文直接从 dll 创建 COM 对象中所述使用您的 DLL。