使用Java代码杀死/停止应用程序

时间:2011-12-06 01:42:56

标签: java process kill

是否可以使用java代码在Windows中停止应用程序? 我想创建一个程序,就像在我的电脑上停止应用程序的快捷方式。是否可以使用ProcessBuilder?谢谢

3 个答案:

答案 0 :(得分:3)

普通Java,没有原生访问权限?否。

ProcessBuilder允许您控制从Java应用程序中启动的进程,但它不能让您控制其他进程启动的进程。

根据user988052的评论,您可以使用Sysinternals Suite中的pskill通过Runtime.exec完成此操作。 pskill使用TerminateProcess函数调用。您也可以使用JNI(或其他一些本机调用程序,如JNA,NLink等)调用此函数,但您需要通过OpenProcess函数调用获取进程句柄。

答案 1 :(得分:0)

  

是否可以使用java代码在Windows中停止应用程序? ......是否可以使用ProcessBuilder?

仅当您从尝试填充它的同一Java应用程序启动应用程序时才会这样做。

除此之外,您需要使用特定于Windows的命令来执行查杀...或基于JNI的某些操作来进行本机Windows库调用。

其他复杂情况是,由于权限问题,您可能无法杀死某些进程,并且某些进程可能会拒绝被杀死。

答案 2 :(得分:0)

我认为JRE不提供系统进程的API。 ProcessBuilder可以创建系统进程,但它无法为在JVM外部创建的进程提供Process对象。我相信这是Java人员的一个哲学决定,尽可能避免某些特定于操作系统的任务。你可能认为每个操作系统都有pid,或者它们都有某种杀戮信息,但是Java运行在许多操作系统上,其中一些非常奇怪。

你可以使用本机代码来完成它并用JNI包装它,但这样做会很浪费。正如988052先生所说,我建议您通过Runtime.execProcessBuilder执行特定于系统的命令。您需要确定要支持哪些操作系统,并确保为每个操作系统提供正确的命令(和操作系统检测代码)。