您需要使用WMI,Win32_Process类包含父进程ID.所以WQL查询(参见.NET下WMI的System.Management命名空间)如:
SELECT * FROM Win32_Process Where ParentProcessId = n
用服务的进程ID 替换n.
编辑示例代码(基于Arsen Zahray的代码):
static List<Process> GetChildPrecesses(int parentId) {
var query = "Select * From Win32_Process Where ParentProcessId = "
+ parentId;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();
var result = processList.Select(p =>
Process.GetProcessById(Convert.ToInt32(p.GetPropertyValue("ProcessId")));
).ToList();
return result;
}
Run Code Online (Sandbox Code Playgroud)