我正在使用一段代码来获取基于Windows的系统上任务管理器的进程,以便我可以发现,如果我的基于桌面的应用程序的实例正在运行或没有运行。代码工作正常,这是我的代码。无法正常获取任务管理器进程列表
private static void getAppInstancesCountAlreadyRunning() throws Exception {
int isApplicationRunning = 0;
String line;
Process p = Runtime.getRuntime().exec(
System.getenv("windir") + "/system32/" + "tasklist.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(
p.getInputStream()));
while ((line = input.readLine()) != null) {
line = line.toLowerCase();
logger.info("....... line read ... "+line);
if (line.contains("AppNameHere")) {// || line.contains("javaw.exe")
logger.info("....... Already running @ " + line);
isApplicationRunning++;
}
}
input.close();
if (isApplicationRunning > 1) {
//Some code here....
}
}
问题是:我也尝试过不同的许多系统有Windows XP和7,但在一个系统上我没有得到的进程列表,我觉得行
Process p = Runtime.getRuntime().exec(System.getenv("windir") + "/system32/" +
"tasklist.exe");
不给正确的列表可以有人告诉是什么原因。
在此先感谢。
是的,这是我刚才在两个系统上检查过的同一个问题,你能否给出一些问题的解决方案? – NoNaMe
您是否检查系统中是否存在任务列表进程?如果是的话,也许你的Java应用程序没有权限运行这个过程...尝试以管理员身份运行 – fmodos
不,我只是检查了罪魁祸首系统中的任务列表进程,它不在那里,我已经检查了版权问题,用户有管理员在该系统的权利,肯定这是任务列表过程的问题,因为它不存在。任何帮助? – NoNaMe