如何在 windows 服务中启动控制台并从那里读取输出或模拟它?

How to start console and read output from there in windows services or emulate this?

我有一些在我的 C# 控制台应用程序中使用的 jar 文件(通过 System.Diagnostics.Process 启动它们)并从我的目的读取控制台输出。

现在我需要将此控制台应用更改为 windows 服务。

m_process = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = "java.exe",
        Arguments = arguments,
        UseShellExecute = false,
        LoadUserProfile = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
    }
};

m_process.Start();
m_process.BeginOutputReadLine();
m_process.BeginErrorReadLine();
m_process.WaitForExit();
m_process.Close();
m_process.Dispose();

m_process.OutputDataReceived += ProcessOutputDataReceived;
m_process.ErrorDataReceived += ProcessErrorDataReceived;

jar 文件通过控制台输出为我提供满足我需要的信息。它在控制台应用程序中工作,但服务不会启动任何控制台,因此我无法读取输出。

我了解无法在 windows 服务中启动控制台。但我正在寻找任何其他方式来启动我的 jar 文件并从中读取输出。

windows 服务是后台作业。它没有控制台。

请记住,服务会在 windows 启动后立即运行。这意味着它甚至在用户登录之前就运行了。甚至没有用户可以向其显示控制台,即使您神奇地能够打开控制台也是如此。

在服务器上,根本没有连接显示器是很常见的。谁会看到您的输出?

解决方案

如果您想从后台程序生成输出,请将其写入日志文件。