我正在构建一个Java应用程序来检查防火墙的状态。简单来说,无论防火墙是开还是关,它都应该给出输出(请注意,当我说防火墙时,我指的是Windows操作系统附带的内置防火墙)。我需要这段代码来给出本地机器本身的状态。基本上,我想要做的就是模拟命令" netsh advfirewall show allprofiles state"。
答案 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()
会起作用。别忘了抓住任何例外!