从C#Windows服务生成进程

Mar*_*ark 2 c# windows service

好吧,我试图从Windows服务产生的线程内部生成一个进程.目标是读取输出并打印到焦点窗口 - 光标在哪里.可能是一个坏主意,我不知道我不是ac#程序员

当我调用函数本身时,产生该过程的Anywho工作,但是当它在一个正在运行的服务中被调用时.是否可以在服务中启动流程?

Process proc = new Process();
                proc.StartInfo.FileName = @"C:\file.bat";
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.UseShellExecute = false;

                proc.Start();

                String outputMessage = proc.StandardOutput.ReadToEnd();
                proc.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 6

从服务开始流程当然是可能的.但是,服务在会话0内运行并且没有桌面.交互式用户在不同的会话中运行其桌面.因此,从服务启动时,在交互式会话中启动并运行进程非常具有挑战性.

有关所涉及问题的说明以及正确的解决方法,请阅读:在Windows Vista及更高版本中从Windows服务启动交互式流程.

最简单的方法是将您的服务分成两个不同的部分.一部分作为服务运行,另一部分作为交互式会话中的无窗口进程运行.这两个进程可以通过您喜欢的任何IPC机制进行通信.当服务想要启动进程时,它只是在交互式会话中向其另一半发送消息以请求启动新进程.

  • 你必须在XP上.这个设置对Vista和up都无济于事. (5认同)