[英]How to kill a process started by cmd.exe
我正在嘗試停止c#中cmd.exe啟動的進程。 例如,開始記事本; cmd.exe / c記事本。
System.Diagnostics.ProcessStartInfo("cmd.exe", "/c notepad");
當我終止進程時,cmd.exe停止。 但記事本仍然存在。 我如何獲得記事本的手柄並停止它?
您應該使用自定義方法列出將cmd作為父進程的所有進程
您需要先添加System.Management引用。
然后簡單地殺死進程樹:
void Main()
{
var psi = new ProcessStartInfo("cmd.exe", "/c notepad");
var cmdProcess = Process.Start(psi);
Thread.Sleep(2000);
KillProcessAndChildren(cmdProcess.Id);
}
public void KillProcessAndChildren(int pid)
{
using (var searcher = new ManagementObjectSearcher
("Select * From Win32_Process Where ParentProcessID=" + pid))
{
var moc = searcher.Get();
foreach (ManagementObject mo in moc)
{
KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"]));
}
try
{
var proc = Process.GetProcessById(pid);
proc.Kill();
}
catch (Exception e)
{
// Process already exited.
}
}
}
您是否考慮過直接啟動notepad.exe
而不是使用cmd.exe
?
從命令行你可以使用
taskkill / MI cmd.exe / T.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.