我有一个创建许多子进程的服务。使用 c# 我需要确定当前正在运行的这些子进程的数量。
例如,我有一个名为“TheService”的服务正在运行。这会产生 5 个子进程,全部称为“process.exe”。是否可以确定服务下运行的子进程的数量?本质上,我需要知道仅给出服务/服务进程名称的“process.exe”实例的数量。
您需要使用 WMI,Win32_进程 http://msdn.microsoft.com/en-us/library/aa394372(VS.85).aspx类包括父进程ID。因此,WQL 查询(请参阅 .NET 下 WMI 的 System.Management 命名空间)如下所示:
SELECT * FROM Win32_Process Where ParentProcessId = n
替换n与服务的进程 ID。
编辑示例代码(基于代码阿尔森扎赫雷 https://stackoverflow.com/users/847200/arsen-zahray):
static List<Process> GetChildProcesses(int parentId) {
var query = "Select * From Win32_Process Where ParentProcessId = "
+ parentId;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();
var result = processList.Cast<ManagementObject>().Select(p =>
Process.GetProcessById(Convert.ToInt32(p.GetPropertyValue("ProcessId")));
).ToList();
return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)