从Windows服务启动应用程序

3
我正在构建一个Windows服务,它将监视特定事件和磁盘活动。当发生这样的事件时,我的计划是通过客户端应用程序向用户发出警报,并在必要时提供纠正操作。我已经(大部分)完成了客户端和服务组件,它们工作得很好...除非客户端应用程序没有运行。 简而言之,我正在寻找一种通过CreateProcess从Windows服务启动客户端应用程序以向用户提供信息的方法。然而,似乎服务甚至看不到客户端应用程序的文件/文件夹来执行它。我怀疑这是由于服务运行的凭据或服务级别限制引起的,但在深入研究之前想寻求一些建议。 因此,首先是显而易见的问题...我是否清楚地考虑了这个问题?架构计划是否稳妥,还是我应该考虑另一种方法?我更希望不重新做任何我已经完成的工作,但显然希望确保计划和流程是可靠的。 第二个问题是,这种模型面临哪些限制?有没有服务账户可以允许这种级别的访问? 目前我很困惑,请提供任何想法或帮助,将不胜感激! 谢谢, Kris

服务配置为运行在哪个安全上下文中? - Harry Johnston
3个回答

4
正如其他人已经提到的,你不能(很容易地)直接从服务中启动应用程序,所以我认为解决问题最简单的方法是创建一个进程,在登录时启动,并使用已登录用户的凭据运行,例如一个坐在系统托盘中的应用程序,并打开命名管道或网络端口到服务。如果服务需要通知用户,它会通过该通道发送消息,然后客户端进程可以显示自己的UI或启动应用程序。使用管道或端口的进程间通信是处理会话0进程限制的最简单方法。

3

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接