Como permitir programaticamente um arquivo JAR executável através do Firewall do Windows?

1

Eu criei um programa em Java que usa uma conexão FTP para baixar arquivos. Funciona muito bem quando eu o executo no Eclipse. No entanto, quando eu exporto o projeto para um arquivo JAR executável, o programa não se conecta ao servidor FTP, ele se conecta somente se eu desabilitar o Firewall do Windows.

Como posso programaticamente adicionar uma exceção a esse arquivo JAR no firewall para que o usuário não precise desativar o firewall para usar meu programa?

    
por DanM 18.10.2012 / 14:22

4 respostas

1

Resolvido, adicionado "netsh advfirewall set global StatefulFTP disable" via comando promp, o código:

try {
            Process p = Runtime.getRuntime().exec("netsh advfirewall set global StatefulFTP disable");
            p.waitFor();
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(p.getInputStream()));
            String line = reader.readLine();
            while (line != null) {
                System.out.println(line);
                line = reader.readLine();
            }

        } catch (IOException e1) {
        } catch (InterruptedException e2) {
        }
    
por 18.10.2012 / 16:17
3

Nas configurações do firewall do Windows, você tem uma guia "Exceções". Adicione "java" ou "javaw" ou o que você usar como exceção. Você também pode adicionar a porta 20 e a porta 21 à lista de exceções.

    
por 18.10.2012 / 14:49
3

-> Control Panel -> Systems and Securtiy -> Windows Firewall -> Allowed Programs

Você precisa adicionar o intérprete java.exe ao firewall. Você não pode adicionar um arquivo .jar ao firewall do Windows.

    
por 18.10.2012 / 14:49
2

Você pode adicionar manualmente exceções ao firewall para que seu programa possa ser acessado sem desativá-lo totalmente.

link

Exceções podem ser adicionadas automaticamente, execute os seguintes comandos.

Adicionar regra de firewall:

Process p = Runtime.getRuntime().exec("cmd /c start runas /user:domain\administrator /savecred:cmdrun.txt netsh advfirewall firewall add rule name=”FTP Service” action=allow service=ftpsvc protocol=TCP dir=in");

Desativar a filtragem de ftp com estado:

Process p = Runtime.getRuntime().exec("cmd /c start runas /user:domain\administrator /savecred:cmdrun.txt netsh advfirewall set global StatefulFTP disable");

Além disso, verifique se a sua conexão ftp está no modo passivo.

    
por 18.10.2012 / 16:13