gpt4 book ai didi

c#-4.0 - 你如何读取windows服务的控制台输出?

转载 作者:行者123 更新时间:2023-12-04 21:23:10 28 4
gpt4 key购买 nike

我有控制台应用程序 ThirdPartyApplications.exe,我必须从 Windows 服务运行。
控制台应用程序给我休息:好的,不正常和错误。

我需要在我的 Windows 服务中捕获这些响应。

我创建了函数

 using (var p = new System.Diagnostics.Process())
{
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @"C:\ThirdPartyApplications.exe";
p.StartInfo.Arguments = "3";
p.Start();
string o = p.StandardOutput.ReadToEnd();

p.WaitForExit();
}

如何捕获此输出?

编辑
 using (var p = new System.Diagnostics.Process())
{
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @"C:\ThirdPartyBatch.bat";
p.StartInfo.Arguments = "file.zip -user.properties";
p.Start();
string o = p.StandardOutput.ReadToEnd();

p.WaitForExit();
}

批处理文件是
@echo off
call run.bat %* 1>log\out.txt 2>log\err.txt
@echo code %ERRORLEVEL%
exit /B %ERRORLEVEL%

在这里,在我的变量 o 中,我没有收到消息“代码 10”

如果我有
@ECHO off
ECHO Hello
PAUSE

在这里,我收到消息“你好”,但如果我更改批处理文件
@ECHO off
call run.bat %* 1>log\out.txt 2>log\err.txt
ECHO Hello
PAUSE

我没有收到消息“你好”

有什么帮助吗?

最佳答案

How can I capture this output?



仅当不作为服务运行时。

Windows 上的可执行文件必须调用特定的 API(直接作为 Win32 应用程序或在 .NET 等框架下间接调用),如果它不调用这些(例如基于命令行 switch1 的逻辑),那么它就是一个普通的可执行文件。

当作为服务运行时,可执行文件由服务控制管理器 (SCM) 启动,并且无法访问标准输出、错误或输入。

1 这在开发和调试服务时很有用:“交互”模式允许从命令行或在调试器中轻松运行。

关于c#-4.0 - 你如何读取windows服务的控制台输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8502780/

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