如何在没有管理员权限的情况下终止父进程?进程A创建进程B,在进程B中我需要终止进程A.
答案 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();
如果没有,那就更难了。