如何终止除当前进程以外的所有具有当前进程名称的进程
How to terminate every process with the current process name except for the current process
我试图终止与我的进程同名的每个进程而不终止我的进程。
这可能有点令人困惑,也许这段代码可以帮助您理解我的意思:
private static void KillExistingProcesses()
{
Process[] p = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (var pro in p)
{
if (...) // if pro != Process.GetCurrentProcess()
pro.Kill();
}
}
我试过这样做:
if (!pro.Equals(Process.GetCurrentProcess())
&& pro != Process.GetCurrentProcess())
但我还是终止了自己的进程。
你们能帮我吗?我只需要为当前进程终止与我的进程 expet 同名的每个进程。
谢谢:)
您正在比较 Process
个没有定义有意义的相等关系的对象。
比较进程 ID。
您可以估计自己的 Process-ID,然后在循环中将其与元素进行比较:
private static void KillExistingProcesses()
{
Process myProc = Process.GetCurrentProcess();
;
Process[] p = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (var pro in p)
{
if (pro.Id != myProc.Id)
{
pro.Kill();
}
}
}
您可以使用 Linq 过滤掉具有相同 Id
的进程
Process current = Process.GetCurrentProcess();
var processes = Process.GetProcessesByName(current.ProcessName)
.Where(p => p.Id != current.Id);
foreach(var process in processes)
{
process.Kill();
}
我试图终止与我的进程同名的每个进程而不终止我的进程。
这可能有点令人困惑,也许这段代码可以帮助您理解我的意思:
private static void KillExistingProcesses()
{
Process[] p = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (var pro in p)
{
if (...) // if pro != Process.GetCurrentProcess()
pro.Kill();
}
}
我试过这样做:
if (!pro.Equals(Process.GetCurrentProcess())
&& pro != Process.GetCurrentProcess())
但我还是终止了自己的进程。
你们能帮我吗?我只需要为当前进程终止与我的进程 expet 同名的每个进程。
谢谢:)
您正在比较 Process
个没有定义有意义的相等关系的对象。
比较进程 ID。
您可以估计自己的 Process-ID,然后在循环中将其与元素进行比较:
private static void KillExistingProcesses()
{
Process myProc = Process.GetCurrentProcess();
;
Process[] p = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (var pro in p)
{
if (pro.Id != myProc.Id)
{
pro.Kill();
}
}
}
您可以使用 Linq 过滤掉具有相同 Id
Process current = Process.GetCurrentProcess();
var processes = Process.GetProcessesByName(current.ProcessName)
.Where(p => p.Id != current.Id);
foreach(var process in processes)
{
process.Kill();
}