如何在C#中编写Windows服务来为用户启动应用程序?

Swo*_*op 3 .net c# windows-services

是否可以启动一个程序,以便具有Windows服务的用户可以使用它?我一直在使用C#中的Process.Start().我可以启动服务以启动进程下任务管理器列表中出现的某种进程.但是,程序nevers出现在屏幕上.默认情况下,它在用户名"SYSTEM"下运行.我已调整服务管理器中的"登录"选项以匹配登录到计算机的人员,但这不会导致窗口出现.

我觉得我要么缺少一个简单的设置,要么为此需要采取不同的方向.下面是我一直在使用的代码,用于启动Firefox作为测试应用程序.

    private void startRunDap()
    {
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "Firefox";
        startInfo.WindowStyle = ProcessWindowStyle.Normal;
        startInfo.UseShellExecute = true;
        Process.Start(startInfo);

        //Process.Start("Firefox");

    }
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 5

在Vista和Win7服务上使用私人桌面在他们自己的会话中运行.您将启动Firefox,但它永远不可见.帐户名实际上是这样的,LocalSystem是一个高度特权的帐户,一个巨大的安全漏洞.

您将需要在用户会话中使用"代理"来启动该过程.一个不可见的程序,您可以使用Run键或Startup文件夹开始,该文件夹通过命名管道或套接字与服务进行通信.它可以启动该程序.