c#从Windows服务启动应用程序的最佳方式

c#从Windows服务启动应用程序的最佳方式,c#,windows,service,C#,Windows,Service,我已从本地服务启动Windows服务。此服务可以安装在具有多个用户的终端windows服务器上。据我所知,服务是在“会话0”中启动的,无法轻松地与用户交互。从该服务为每个用户启动另一个exe文件的最佳方式是什么?我认为这另一个应用程序不能直接从服务启动。我可以通过注册表启动键中的服务添加应用程序添加,此应用程序将在下次登录时启动,但我不确定这是否是最佳解决方案您必须创建一个带有GUI的单独应用程序以及它们之间的通信方式。实现这一点的方法有很多,每种方法都有优点和缺点。所以这完全取决于你的需要 仅

我已从本地服务启动Windows服务。此服务可以安装在具有多个用户的终端windows服务器上。据我所知,服务是在“会话0”中启动的,无法轻松地与用户交互。从该服务为每个用户启动另一个exe文件的最佳方式是什么?我认为这另一个应用程序不能直接从服务启动。我可以通过注册表启动键中的服务添加应用程序添加,此应用程序将在下次登录时启动,但我不确定这是否是最佳解决方案

您必须创建一个带有GUI的单独应用程序以及它们之间的通信方式。实现这一点的方法有很多,每种方法都有优点和缺点。所以这完全取决于你的需要

仅举几个例子:

  • 插座

  • 命名管道


服务不应该直接处理与特定会话相关的任何事情;“允许服务与桌面交互”选项仍然存在,但确实不应使用;自Vista时代以来,特权服务(例如,作为系统运行)可以在任何会话中启动另一个进程,但这不一定是最好的方式。让用户会话启动客户端应用程序更简单。如何在用户会话中启动客户端应用程序?是否为所有使用该服务的用户添加自动运行?您可以使用模拟从本地系统服务启动应用程序。例如,请参见函数ImpersonalLoggedOnUser。但这并不是特别简单的技术。您可以使用windows任务计划程序,请参阅。