运行相同COM对象的多个进程(.NET)

时间:2018-04-12 07:40:23

标签: .net visual-studio com multiple-instances

我正在开发一个可以在客户端的PC上运行的.NET代码。代码必须调用已在客户端PC上注册的COM对象,以用于其他程序。所以我只需要共享一个注册组件。

我使用客户端的COM组件进行了相同的分发,将其安装在我的开发机器上并在我的Visual Studio中引用它。代码在我的PC上运行良好,我的程序的多个实例不会创建多个COM对象实例(pslist显示几个MyProgram.exe进程,但只有一个COM进程)。

当我构建程序时,它还包含引用的COM组件。在将其分发到客户端的PC并运行之后,pslist显示有两个进程运行COM组件。即客户端运行自己的程序,使用他的COM对象,我的程序也创建自己的COM进程。这很糟糕,因为我仍然需要一个运行COM组件的客户端PC上的进程。客户端的程序和我的程序都是作为同一个用户启动的。

我怀疑我的构建中包含的COM组件是在运行时在客户端的PC上使用另一个ObjectID注册的(但实际上来自同一个安装包)并且操作系统不会将其识别为已经运行的同一组件。需要帮助来诊断此问题的根源并进行修复。

谢谢

1 个答案:

答案 0 :(得分:1)

解决了。在用户的PC上运行相同的程序并没有导致多个COM实例。但是' psexec'在用户的PC和' runas'目标用户做了。谢谢西蒙的帮助!你不可能知道我试图以同样的方式运行程序!是我的错。