Код Java для проверки состояния брандмауэра

Я создаю приложение Java для проверки состояния брандмауэра. Проще говоря, он должен выводить информацию о том, включен или выключен брандмауэр (обратите внимание, что когда я говорю «брандмауэр», я имею в виду встроенный брандмауэр, который поставляется с ОС Windows). Мне нужен этот код, чтобы указать статус самой локальной машины. По сути, я пытаюсь имитировать команду «netsh advfirewall показать состояние всех профилей».


person clearcut    schedule 11.01.2015    source источник


Ответы (1)


Насколько я знаю, нет Java API для проверки состояния встроенного брандмауэра Windows, поэтому вам, вероятно, придется прибегнуть к выполнению команды оболочки из Java. Пример:

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() будет работать. Не забывайте ловить любые исключения!

person molenzwiebel    schedule 11.01.2015