杀死没有管理员权限的父进程

时间:2011-09-30 12:06:47

标签: c# .net process kill-process

如何在没有管理员权限的情况下终止父进程?进程A创建进程B,在进程B中我需要终止进程A.

4 个答案:

答案 0 :(得分:2)

检查this

  

TASKKILL

     

结束一个或多个任务或流程。进程可以被杀死   进程ID或图像名称。语法

     

taskkill [/ s计算机] [/ u域\用户[/ p密码]]] [/ fi   FilterName] [/ pid ProcessID] | [/ im ImageName] [/ f] [/ t]

     

/ t:指定终止所有子进程以及父进程   过程,俗称树杀。

你可以用C#开始一个过程,如:

using System.Diagnostics;

string args = ""; // write here a space separated parameter list for TASKKILL
Process prc = new Process(new ProcessStartInfo("Taskkill", args));
prc.Start();

答案 1 :(得分:2)

您希望ProcessB向ProcessA发出信号,要求它停止运行。然后,ProcessA可以清理所有资源并优雅地退出(如评论中的建议所示)。那么,Process如何向另一个进程发出信号呢?这就是所谓的进程间通信(IPC),在同一台机器上或跨机器有许多方法可以做,包括消息总线,Web服务,命名管道。

一个简单的选项是系统范围的EventWaitHandle - 这里的好例子Signalling to a parent process that a child process is fully initialised

答案 2 :(得分:2)

所以你有两个进程的源代码。在这种情况下,您可以使用命名系统事件(如信号量)来优雅地结束进程A.例如,进程A中的construct a named semaphore,在启动进程B时将名称作为命令行参数之一传递给进程B. {来自进程B的{3}}并发出信号让进程A知道它可以结束。您也可以使用taskkill但不能优雅地结束A可能会导致损坏资源A使用。

答案 3 :(得分:0)

如果您知道父进程名称,那么一切都非常简单,那么解决方案是:

System.Diagnostics.Process.GetProcessesByName ("ParentProcessName")[0].Kill();

如果没有,那就更难了。