C# 重定向stderr/stdout

C# 重定向stderr/stdout,c#,.net,console-output,console-redirect,C#,.net,Console Output,Console Redirect,我有一个C#应用程序,其中我试图将一些写在上面的文本重定向到stderror。写入stderror的文本实际上是通过调用其他dll中存在的函数来编写的。 我使用了CreatePipe、SetStdHandle和ReadFile(按顺序)来实现上述功能。虽然我可以使用Console.SetError重定向在同一个C#文件中写入的任何文本,但由另一个dll写入到stderr的文本仍然会写入本机stderr,并且不会重定向 有没有办法捕获/重定向此文本?谢谢。我想补充一点,我没有执行新的进程,因此无法

我有一个C#应用程序,其中我试图将一些写在上面的文本重定向到stderror。写入stderror的文本实际上是通过调用其他dll中存在的函数来编写的。 我使用了
CreatePipe
SetStdHandle
ReadFile
(按顺序)来实现上述功能。虽然我可以使用Console.SetError重定向在同一个C#文件中写入的任何文本,但由另一个dll写入到stderr的文本仍然会写入本机stderr,并且不会重定向


有没有办法捕获/重定向此文本?谢谢。

我想补充一点,我没有执行新的进程,因此无法更改其开始信息,这在这里的一些其他答案中已经解释过。因此,您可以对写入stderr的dll执行p/invoke。即使你重定向了Console.ErrorStream,dll输出也没有重定向?我不使用p/invoke,我只调用在另一个dll中实现的函数。我不知道Console.ErrorStream,请澄清,我只知道Console类的SetIn、SetOut和SetError,这可能与这里有关。另外,我在网上读到一些人提到控制台对于托管(在本例中是我的C#应用程序)和非托管(在本例中,dll可能使用win32函数写入标准错误)代码是不同的。如果这确实是这里的问题,它能被克服吗?实际上,您可以重定向输出/输入/错误流(SetX方法),同时访问它们(X属性)。