我正在构建一个Java应用程序来检查防火墙的状态。简而言之,它应该给出防火墙是打开还是关闭的输出(请注意,当我说防火墙时,我的意思是Windows操作系统附带的内置防火墙)。我需要这段代码来给出本地机器本身的状态。基本上,我正在尝试做的是模拟命令"netsh advfirewall 显示所有配置文件状态"。
据我所知,没有用于检查内置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()
就可以了。不要忘记捕捉任何异常!