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

本文关键字:进程 权限 管理员 | 更新日期: 2023-09-27 18:10:11

如何杀死没有管理员权限的父进程?进程A创建了进程B,在进程B中我需要终止进程A。

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

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

一个简单的选项是系统范围的EventWaitHandle——这里有一个很好的例子,向父进程发出信号,表明子进程已经完全初始化

这样您就有了两个进程的源代码。在这种情况下,你可以使用像信号量一样的命名系统事件来优雅地结束进程a。例如,在进程a中构造一个命名信号量,在启动进程B时将其名称作为命令行参数之一传递给进程B。打开进程B中现有的命名信号量,并发出信号让进程a知道它可以结束了。您也可以使用taskkill,但不优雅地结束A可能会导致破坏A使用的资源。

检查这个:

Taskkill

结束一个或多个任务或进程。进程可以通过进程ID或镜像名称。语法

taskkill [/s计算机][/u域'用户[/p密码]]][/fiFilterName] [/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();

如果您知道parentProcessName,那么解决方案是:

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