我正在使用一段代码来获取基于 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");
没有给出正确的列表,有人能说出原因是什么。
提前致谢。