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