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)
从服务开始流程当然是可能的.但是,服务在会话0内运行并且没有桌面.交互式用户在不同的会话中运行其桌面.因此,从服务启动时,在交互式会话中启动并运行进程非常具有挑战性.
有关所涉及问题的说明以及正确的解决方法,请阅读:在Windows Vista及更高版本中从Windows服务启动交互式流程.
最简单的方法是将您的服务分成两个不同的部分.一部分作为服务运行,另一部分作为交互式会话中的无窗口进程运行.这两个进程可以通过您喜欢的任何IPC机制进行通信.当服务想要启动进程时,它只是在交互式会话中向其另一半发送消息以请求启动新进程.
| 归档时间: |
|
| 查看次数: |
3629 次 |
| 最近记录: |