views:

539

answers:

2

I have a service which creates a number of child processes. Using c# I need to determine the number of these child processes which are currently running.

For example I have a service running called "TheService". This spawns 5 child processes, all called "process.exe". Is it possible to determine the number of child processes running under the service? Essentially I need to know the number of instances of "process.exe" given only the name of the service/service process name.

A: 

I am not sure exactly what you mean by "the name of the service" - would that be process.exe?

If so, the static method Process.GetProcessesByName() should do the trick:

Process[] procs = Process.GetProcessesByName("process");
Console.WriteLine(procs.Length);

Let me know if I misunderstood your question.

Jørn Schou-Rode
Sorry I wasn't very clear. Having thought about it a bit more I realise that I just need to get the number of child processes for a given process name. Thanks for your answer.
Bardsley
Ok. Richard's answers should solve it then. I withdraw my answer, but unless someone objects, I will leave it here, as it might just help others in the future... :)
Jørn Schou-Rode
+3  A: 

You need to use WMI, the Win32_Process class includes the parent process id. So a WQL query (see System.Management namespace for WMI under .NET) like:

SELECT * FROM Win32_Process Where ParentProcessId = n

replacing n with the service's process id.

Richard