如何终止我们在java{.exec(";cmd/c";和&x2B;command)中开始使用exec的进程

如何终止我们在java{.exec(";cmd/c";和&x2B;command)中开始使用exec的进程,java,process,runtime.exec,destroy,Java,Process,Runtime.exec,Destroy,所以,我在运行时类中使用exec方法在java中启动了一个进程。现在,我是如何调用它的,如下所示 Runtime r=Runtime.getRuntime(); Process p=null; String s="E:\\Softwares\\fiddler4setup.exe"; p=r.exec("cmd /c"+s); 现在,当我尝试使用p.destroy()方法销毁进程时。Fiddler4setup.exe仍在运行。我已经找了一个星期的方法来解决这个问题。即使在这里,对于这类问题

所以,我在运行时类中使用exec方法在java中启动了一个进程。现在,我是如何调用它的,如下所示

Runtime r=Runtime.getRuntime(); 
Process p=null; 
String s="E:\\Softwares\\fiddler4setup.exe"; 
p=r.exec("cmd /c"+s);
现在,当我尝试使用p.destroy()方法销毁进程时。Fiddler4setup.exe仍在运行。我已经找了一个星期的方法来解决这个问题。即使在这里,对于这类问题也没有特别正确的答案。请帮我做这个

另外,直接运行该文件也不起作用,因为它显示了一些704错误。然后,我看到了使用“cmd/c”的解决方案


谢谢。

要终止您的进程,您必须使用:

Taskkill /IM YourProcess.exe /F
还是用PID

Taskkill /PID 26356 /F
因此,您的程序应该如下所示:

Runtime r = Runtime.getRuntime();
Process p = r.exec("Taskkill /IM fiddler4setup.exe /F");
注意:您可以在cmd中使用此命令
tasklist
获取进程的PID,如果使用PID避免所有路径问题,效果会更好


编辑

没有明确的方法以管理员模式运行脚本,希望能给您一些问题和想法:




应该可以不使用cmd.Exe直接运行二进制Exe。。。所以我会先调试为什么那个调用不起作用,我已经调试过了。据我所知,当我在cmd中尝试此操作时,此过程无法终止,并且消息声明为“访问被拒绝”@GhostCat@GhostCat,它统计了一个错误:CreateProcess error=740,请求的操作需要提升。因此,只需使用管理员权限启动Java程序;分别要求您的用户这样做。很明显,提升并不是任何程序都能触发的。像我一样尝试不使用路径,或者像我一样搜索任务的PID并杀死它@SunilSonuI我使用tasklist获得fiddler4setup的PID,然后使用上面的代码,但它不起作用@YCF\u在shell上直接运行该命令是否有效?不是从Java调用它?我用Java和cmd来尝试,但是用另一个进程,而不是
fiddler4setup
,它工作得很好,我认为它的逻辑是相同的@GhostCat,或者我错了?即使在shell中,它说“访问被拒绝”@GhostCat