如何在 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 启动后立即运行。这意味着它甚至在用户登录之前就运行了。甚至没有用户可以向其显示控制台,即使您神奇地能够打开控制台也是如此。
在服务器上,根本没有连接显示器是很常见的。谁会看到您的输出?
解决方案
如果您想从后台程序生成输出,请将其写入日志文件。
我有一些在我的 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 启动后立即运行。这意味着它甚至在用户登录之前就运行了。甚至没有用户可以向其显示控制台,即使您神奇地能够打开控制台也是如此。
在服务器上,根本没有连接显示器是很常见的。谁会看到您的输出?
解决方案
如果您想从后台程序生成输出,请将其写入日志文件。