Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C#: Redirect Standard Output of a Process that is Already Running

I've been having a hard time getting the output of a "sub-process" (one launched internally by a blackbox process that I'm monitoring via c# System.Diagnostics.Process)

I took the advice given by the answer of my previous post: here. And there you can find the details of what I've been going through.

At this point, although I'm able to locate the ssh process spawned by process1.exe, that I'm monitoring. I can't redirect the output to my c# program, because it is an "already running process", and wasn't launched directly from C#.

It seems that, all the properties that you set on a System.Diagnostics.Process object, only take effect if you are explicitly launching that process from your c# application; if some other "unmanaged process" has launched the process, setting this redirection has no effect, because the process has already been launched by something that didn't specify the redirection I need.

Is there any way to redirect output of a process that has already been launched (a process launched by a program for which I have no scope to pre-specify redirection before this process is launched)?

like image 937
Lonnie Best Avatar asked Jan 19 '10 18:01

Lonnie Best


2 Answers

Assuming there's no more straightforward solution, you could try to run a piece a code in another process through CreateRemoteThread(), explained here.

like image 151
Ariel Avatar answered Nov 19 '22 09:11

Ariel


Instead of redirecting the output directly from the running process, can you capture the output as it leaves the process A at the intended destination, the pass it into your new process?

like image 1
Ian Jacobs Avatar answered Nov 19 '22 10:11

Ian Jacobs