COM进程外服务器启动多个实例

时间:2013-02-11 04:54:50

标签: com out-of-process

如何强制本地COM服务器在公共帐户下运行(本地系统会好)? RunAs文档似乎只适用于DCOM,并且不能在本地工作。

我面临的问题是我的CoCreateInstance是从在不同桌面上运行的进程调用的,而在这种情况下SCM想要为每个桌面启动一个新服务器,我只想要一个单一的实例 - 按照设计!

1 个答案:

答案 0 :(得分:1)

您所描述的是系统服务,而不是COM服务器。 COM服务器设计为在运行它的任何会话下运行,而不是在"会话0" (服务)或任何单一会话。如果您需要仅在1个会话下运行且可以全局访问其他所有内容的内容,则应使用Windows服务,而不是COM服务器。

如果出于其他原因需要COM服务器方面,但想要在全球范围内共享资源,或者仍然有一个进程"控制您需要做的任何事情......您可以让您的COM服务器使用您喜欢的任何IPC方法与您的服务进行通信。

此外,在您的评论中,您说"当我从命令行运行时#34; - 如果从命令行运行EXE,它是否注册为COM服务器并不重要,它只是像任何其他EXE / app一样运行 - 这意味着它像任何用户一样运行无论你在哪个会话中运行它。将EXE注册为COM服务器只允许其他进程运行该EXE并通过OLE / COM与它通信,但EXE仍然可以作为普通应用程序运行。例如,Microsoft Word和Outlook都是COM服务器。也就是说,outlook.exe是一个COM服务器,当然你也可以将其作为普通应用程序运行。