如何检测 .NET 应用程序是否正在使用我的 COM 对象?

发布于 2024-11-07 22:13:18 字数 177 浏览 1 评论 0原文

我有一个用 Visual C++ 编写的 COM DLL。我完全控制 COM DLL 代码。当然,它可以从托管和非托管应用程序中使用。我想插入一个非常具体的检查,该检查仅应在 .NET 应用程序使用 COM DLL 时运行。

是否有某种编程方法可以让我的 COM 对象检测它是从 .NET 应用程序还是从非托管应用程序使用?

I have a COM DLL written in Visual C++. I fully control that COM DLL code. Of course it can be consumed from both managed and unmanaged applications. I want to insert a very specific check that should only be run when the COM DLL is consumed by a .NET application.

Is there some programmatic way for my COM object to detect whether it is being consumed from a .NET application or from an unmanaged application?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱格式化 2024-11-14 22:13:18

这些“我的环境是什么”的问题总是有相同的答案。您的主机可以毫不费力地确定它是否受到托管,只需向您的界面添加一个属性即可让它告诉您。与替代方案相比,这是一个微不足道的解决方案。这在 COM 中不可能可靠地实现,有很多托管服务器的方法。

These kind of "what's my environment" questions always have the same answer. Your host has no trouble figuring out if it is managed, just add a property to your interface to let it tell you. A trivial solution compared with the alternative. Which is impossible to implement reliably in COM, lots of ways to host a server.

无言温柔 2024-11-14 22:13:18

两种可能性:

  1. 创建一个包装 COM 对象的本机 .NET 程序集并对其进行适当初始化
  2. 尝试检测您的进程是否是 .NET 进程并解决问题(无单一检测、误报、在 DCOM/COM+ 上下文中使用时很可能无效检测)

Two possibilities:

  1. Create a native .NET assembly wrapping the COM object and initializing it appropriately
  2. Try to detect whether your process is a .NET process and live with the problems (no mono detection, false positives, most likely invalid detection when used in the context of DCOM/COM+)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文