gpt4 book ai didi

c# - 如何在 C# 中获取给定服务的子进程列表?

转载 作者:可可西里 更新时间:2023-11-01 14:01:22 25 4
gpt4 key购买 nike

我有一个创建多个子进程的服务。使用 c# 我需要确定当前正在运行的这些子进程的数量。

例如,我有一个名为“TheService”的服务正在运行。这产生了 5 个子进程,都称为“process.exe”。是否可以确定服务下运行的子进程数?本质上,我需要知道“process.exe”的实例数量,仅给出服务/服务进程名称的名称。

最佳答案

您需要使用 WMI,Win32_Process类包括父进程 ID。因此,WQL 查询(请参阅 .NET 下 WMI 的 System.Management 命名空间)如下:

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# - 如何在 C# 中获取给定服务的子进程列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1073615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com