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

时间:2011-05-17 12:18:35

标签: .net windows visual-c++ com com-interop

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

我的COM对象是否有一些编程方式来检测它是从.NET应用程序还是从非托管应用程序中使用?

2 个答案:

答案 0 :(得分:2)

这些"我的环境是什么"问题总是有相同的答案。您的主机可以确定它是否受管理,只需在您的界面中添加一个属性即可让它告诉您。与替代方案相比,一个简单的解决方案。哪个在COM中无法可靠地实现,有很多方法来托管服务器。

答案 1 :(得分:1)

两种可能性:

  1. 创建包装COM对象并正确初始化它的本机.NET程序集
  2. Try to detect whether your process is a .NET process并解决问题(没有单声道检测,误报,在DCOM / COM +环境中使用时很可能无效检测)