Windows Güvenlik Duvarı üzerinden yürütülebilir bir JAR dosyasına programlı olarak nasıl izin verilir?


1

Java'da dosyaları indirmek için bir FTP bağlantısı kullanan bir program oluşturdum. Eclipse'de çalıştırdığımda gayet iyi çalışıyor. Ancak, projeyi çalıştırılabilir bir JAR dosyasına verdiğimde, program FTP sunucusuna bağlanmıyor, yalnızca Windows Güvenlik Duvarı'nı devre dışı bırakırsam bağlanıyor.

Kullanıcının programımı kullanmak için güvenlik duvarını kapatmasına gerek kalmaması için güvenlik duvarındaki bu JAR dosyasına bir istisna nasıl programsal olarak ekleyebilirim?


Tüm bağlantılar java.exe yorumlayıcısından geçer. Güvenlik duvarına eklenmişse, hiçbir şey yeni bağlantılar kurulmasını engelleyemez.

1
Güvenlik duvarına programlı olarak bir istisna ekleyemezsiniz. Aksi halde her program bunu yapabilir - ve böylece güvenlik duvarını tehlikeye atar.

Tamam, bazı programlarda olduğu gibi güvenlik duvarında programlı olarak nasıl istisna sorabilirim. İstisna isteyen açılır pencere.
DanM

Bağlantı kuramazsanız, istisnayı kullanıcının güvenlik duvarına eklemek için mesajı görüntülemeniz yeterlidir.
Ramhound

@Prototype Stark Doğru değil, bunun için mevcut bir API var ve iyi çalışıyor. Test ettim bu yerel kod . Bunu yerel katmana sarabilir ve Java ile çağırabilir veya bunu yapmak için bir VB komut dosyası veya başka bir şekilde yazabilirsiniz.
EntangledLoops

Yanıtlar:


3

Windows güvenlik duvarı ayarlarınızda, bir "İstisnalar" sekmesine sahipsiniz. "Java" veya "javaw" veya istisna olarak orada ne kullanıyorsanız kullanın. Özel durumlar listesine bağlantı noktası 20'yi ve bağlantı noktası 21'i de ekleyebilirsiniz.


Bunu denedim, işe yaramadı.
DanM

Sağ java.exe ve / veya javaw.exe dosyasını eklediğinizden emin misiniz? Kavanozun üzerine çift tıkladığınızda tam olarak denilen?

3

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

Güvenlik duvarına java.exe yorumlayıcısı eklemelisiniz. Windows güvenlik duvarına bir .jar dosyası ekleyemezsiniz.


Bunu denedim, işe yaramadı.
DanM

2

Güvenlik duvarına istisnaları el ile ekleyebilir, böylece programınız tamamen devre dışı bırakmadan geçebilir.

http://support.lexisnexis.com/us_en_us/record.asp?bRFS=1&ArticleID=10093

İstisnalar otomatik olarak eklenebilir, aşağıdaki komutları çalıştırın.

Güvenlik duvarı kuralı ekle:

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");

Durum bilgisi olan ftp filtrelemeyi devre dışı bırak:

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

Ayrıca, ftp bağlantınızın pasif modda olduğundan emin olun.


1

Çözüldü, "netsh advfirewall set global StatefulFTP'yi devre dışı bırak" komutunu kullanarak komut istemi eklendi:

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) {
        }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.