如何在 C# 中获取给定服务的子进程列表? [英] How can I get a list of child processes for a given service in C#?
问题描述
我有一个服务,它创建了许多子进程.使用 c# 我需要确定当前正在运行的这些子进程的数量.
例如,我有一个名为TheService"的服务正在运行.这会产生 5 个子进程,都称为process.exe".是否可以确定在该服务下运行的子进程数?基本上我需要知道process.exe"的实例数,只给出服务/服务进程名称的名称.
你需要使用 WMI,Win32_Process 类包含父进程 ID.因此,WQL 查询(请参阅 .NET 下 WMI 的 System.Management 命名空间)如下:
<前>SELECT * FROM Win32_Process where ParentProcessId = n将 n 替换为服务的进程 ID.
编辑示例代码(基于 Arsen Zahray 的代码):
static ListGetChildProcesses(int parentId) {var query = "Select * From Win32_Process Where ParentProcessId = "+ 父 ID;ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);ManagementObjectCollection processList = searcher.Get();var result = processList.Cast().Select(p =>Process.GetProcessById(Convert.ToInt32(p.GetPropertyValue("ProcessId")));).ToList();返回结果;}
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.
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.
EDIT Sample code (based on code by 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;
}
这篇关于如何在 C# 中获取给定服务的子进程列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!