用于检查防火墙状态的Java代码

时间:2015-01-11 21:08:09

标签: java command firewall windows-firewall netsh

我正在构建一个Java应用程序来检查防火墙的状态。简单来说,无论防火墙是开还是关,它都应该给出输出(请注意,当我说防火墙时,我指的是Windows操作系统附带的内置防火墙)。我需要这段代码来给出本地机器本身的状态。基本上,我想要做的就是模拟命令" netsh advfirewall show allprofiles state"。

1 个答案:

答案 0 :(得分:1)

据我所知,没有用于检查内置Windows防火墙状态的Java API,因此您可能不得不求助于从Java执行shell命令。一个例子:

StringBuilder output = new StringBuilder();
Process p = Runtime.getRuntime().exec("netsh advfirewall show allprofiles state");
p.waitFor(); //Wait for the process to finish before continuing the Java program.

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";           
while ((line = reader.readLine()) != null) {
  output.append(line + "\n");
}
//output.toString() will contain the result of "netsh advfirewall show all profiles state"

由于我手头没有Windows机器,我不知道netsh advfirewall show allprofiles state返回什么,但我想简单的output.toString().contains()会起作用。别忘了抓住任何例外!