2015-01-11 6 views
0

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

ответ

1

Насколько я знаю, нет API-интерфейсов Java для проверки встроенного состояния брандмауэра 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() будет работать. Не забудьте поймать какие-то исключения!