gpt4 book ai didi

c# - 从 C# Windows 服务生成进程

转载 作者:可可西里 更新时间:2023-11-01 09:48:55 26 4
gpt4 key购买 nike

好吧,我正在尝试从 Windows 服务生成的线程中生成一个进程。目标是读取输出并打印到焦点窗口 - 光标所在的位置。可能是个坏主意,我不知道我不是 C# 程序员

当我调用函数本身时,任何产生该进程的人都会工作,但当它在正在运行的服务中被调用时则不会。是否可以在服务内部启动进程?

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();

最佳答案

从服务启动进程当然是可能的。但是,服务在 session 0 中运行并且没有桌面。交互式用户在不同的 session 中运行他们的桌面。因此,从服务启动时,在交互式 session 中启动并运行进程非常具有挑战性。

有关所涉及问题的说明,以及正确解决问题的难度,请阅读:Launching an interactive process from Windows Service in Windows Vista and later .

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

关于c# - 从 C# Windows 服务生成进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8175720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com