【发布时间】:2013-12-01 15:48:55
【问题描述】:
我有一个 SFX WinRAR autoxtraible 文件,它使用 notepad.exe 进程运行一个文本文件,并且 SFX 文件等待接收 notepad.exe 的退出代码以完成 SFX 执行。
我想做一个treekill,杀死所有由SFX文件打开的进程,或者换句话说,我想在.NET中重现这个批处理命令:
/t :指定终止所有子进程以及 父进程,俗称树杀。
Taskkill /F /T /IM "SFX file.exe"
为了杀死一个进程,我这样做了,VBNET:
''' <summary>
''' Kill a process specifying the process name.
''' </summary>
Private Sub Kill_Process(ByVal ProcessName As String,
Optional ByVal Recursive As Boolean = True)
ProcessName = If(ProcessName.EndsWith(".exe", StringComparison.InvariantCultureIgnoreCase),
ProcessName.Substring(0, ProcessName.LastIndexOf(".")),
ProcessName)
For Each p As Process In Process.GetProcessesByName(ProcessName)
p.Kill()
If Not Recursive Then Exit For
Next p
End Sub
现在,在 C# 或 VBNET 中,我如何识别由 SFX 打开的子进程以一次性杀死它们?
【问题讨论】:
-
喜欢this?
-
@Neolisk 非常感谢您提供的信息,子需要一个 pid,我正在尝试对其进行修饰以期望一个进程名称,我认为我可以在没有帮助的情况下自己完成,也许是这样代码救了我的命,再次感谢
-
您应该能够调整 WMI 查询以按进程名称进行过滤。
-
效果很好,谢谢
-
我很高兴你能解决这个问题。 :)
标签: c# .net vb.net process child-process