从服务启动活动用户会话中的程序?

时间:2009-11-13 16:08:59

标签: c# .net service desktop

如何从正在运行的.NET后台进程启动活动用户会话中的程序。基本上我有一个作为服务运行的.NET应用程序,我希望该应用程序在发生某些事件时在用户桌面上启动特定的窗口应用程序。

我该怎么做?

这个问题与此问题有关:Start a program in active user session with PowerShell remoting

更新
单独使用Process.Start在此处不起作用,因为它在当前应用程序会话中启动应用程序。它不会在特定用户活动桌面会话中启动应用程序。

3 个答案:

答案 0 :(得分:2)

您是否可以构建某种用户在后台运行的轻量级侦听器应用程序?据推测,您的服务可以与侦听器通信,并让侦听器实例化窗口应用程序,因为它在用户的上下文中运行。

答案 1 :(得分:0)

CreateProcessWithLogonW函数允许您传递要运行应用程序的用户的凭据。

另外,请注意,如果沿着这条路线前进,则需要传入STARTUPINFO结构,以便它在正确的桌面上启动,而不是将其保留为空。

答案 2 :(得分:0)

查看Windows服务的登录上下文shown here。这允许Windows服务与桌面会话的交互。