如何在 C# 中获取给定服务的子进程列表?
我有一个创建许多子进程的服务。 使用 c# 我需要确定当前正在运行的这些子进程的数量。
例如,我有一个名为“TheService”的服务正在运行。 这会产生 5 个子进程,全部称为“process.exe”。 是否可以确定服务下运行的子进程的数量? 本质上,我需要知道仅给出服务/服务进程名称的“process.exe”实例的数量。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要使用 WMI,即 Win32_Process 类包括父进程 ID。 因此,WQL 查询(请参阅 .NET 下 WMI 的 System.Management 命名空间)如下所示:
将 n 替换为服务的进程 ID。
编辑示例代码(基于 Arsen Zahray 的代码):
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:
replacing n with the service's process id.
EDIT Sample code (based on code by Arsen Zahray):
我不确定“服务名称”到底是什么意思 - 那是 process.exe 吗?
如果是这样,静态方法 Process.GetProcessesByName() 应该执行以下操作技巧:
如果我误解了你的问题,请告诉我。
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:
Let me know if I misunderstood your question.