Dodanie aplikacji do wyjątków w zaporze W10

0

Witajcie

Czy można jakoś wywołać okienko zapory Windowsa, które zapyta użytkownika czy dodać uruchamianą aplikację do wyjątków?

Nie chcę dodawać aplikacji do wyjątków bez wiedzy użytkownika.
Chciałbym, żeby podczas uruchamiania, aplikacja sprawdziła czy jest na liście wyjątków zapory i jeśli nie, to żeby wywołała okienko z pytaniem czy dodać ją do wyjątków.

Windows 10, 64 bit.

0

samo się pokaże jak spróbujesz się z netem połączyć

0

Tak już próbowałem. Testowo przez FTP i samo połączenie się z serwerem nie powoduje pojawienia się pytania czy dodać aplikację do wyjątków. Takie pytanie pojawia się w momencie kiedy próbuje się coś pobrać przez ftp.get, ale z kolei aplikacja testowa wiesza się w momencie pojawienia się pytania o dodanie jej do wyjątków, bo podejrzewam, że zapora włazi w paradę pobieraniu pliku z ftp i po kilkudziesięciu sekundach pojawia się Connection timed out. Po czym aplikacja się odwiesza i działa prawidłowo. Została dodana do wyjątków. Ale to przywieszenie jest nie do zaakceptowania. Całą procedurę wykonuję poprzez try...except.

Jest jakiś inny sposób na połączenie się z siecią, co spowoduje pojawienie się pytania od z zapory?

0

Według mnie nie ma to sensu, dlatego że systemowy firewall nie jest jedynym używanym przez użytkowników. Systemowa zapora może być wyłączona, ale inna (firmy trzeciej) może w tym czasie działać, więc w dalszym ciągu będzie problem z dostępem do sieci.

Natomiast Twój program działa jak najbardziej prawidłowo - jeśli jakaś zapora zablokuje program to użytkownik musi zareagować, czyli potwierdzić dodanie aplikacji do wyjątków. Jeśli tego nie zrobi to program powinien po jakimś czasie anulować próbę pobierania i tak też się dzieje.

Twoim problemem nie jest systemowa (czy inna) zapora, a wykonywanie kodu pobierania w głównym wątku aplikacji. Jeśli nie chcesz aby interfejs pozostawał zamrożony podczas blokowania apki przez firewall to odpal ten kod z wątku pobocznego. Dzięki temu interfejs nie będzie "wisiał" i program będzie współpracował z każdą zaporą.

0

A miałbyś może gdzieś w zanadrzu jakiś inny sposób na wywołanie zapory systemowej niż ten nieszczęsny ftp?

1

Czy systemowy firewall (zapora) jest wyłączona można łatwo sprawdzić (przykłady w C++ ale to API więc można przetłumaczyć)
https://msdn.microsoft.com/en-us/library/windows/desktop/dd339610(v=vs.85).aspx
Tak możesz "przelecieć"po regułach i poszukać swojej apki
https://msdn.microsoft.com/en-us/library/windows/desktop/dd339609(v=vs.85).aspx
Natomiast co do samego okienka to nie możesz zrobić swojego pytania?
Sam temat dodawania wyjątków był już poruszany
Dodanie aplikacji do wyjątków zapory w Win10

1
axel234:

A miałbyś może gdzieś w zanadrzu jakiś inny sposób na wywołanie zapory systemowej niż ten nieszczęsny ftp?

Nie no nie mam, bo nie jest to konieczne. Tak jak napisałem w swoim poprzednim poście, ręczne wywoływanie systemowego okna dialogowego jest zbędne, bo użytkownik może posiadać inny firewall, do którego API nie istnieje. Według mnie zabezpieczenie jednego przypadku spośród stu nie ma żadnego sensu i szkoda czasu na jego implementację.

Co więcej, dodanie aplikacji do listy wyjątków zapory systemowej to zadanie dla instalatora. W instalatorze oznajmia się użytkownikowi, że kreator może w ramach swojej pracy (instalacji) dodać wpis do listy wyjątków - z reguły jest to checkbox z odpowiednim tytułem, domyślnie zaznaczony. Instalatory zawsze posiadają podwyższone uprawnienia, więc mogą wykonać taką rejestrację. Natomiast aplikacja docelowa nie powinna uruchamiać się domyślnie z prawiami admina - wyjątkiem są aplikacje, które bez tych uprawnień nie mogą funkcjonować. W takim przypadku należy zabezpieczyć kod, tak aby prawidłowo reagował na brak połączenia z serwerem, a podzbiorem zbioru błędów związanych z komunikacją są właśnie blokady po stronie systemu operacyjnego i aplikacji firm trzecich (antywirusy, zapory itd.).

Tak więc Twoim obowiązkiem @axel234 jest napisanie kodu w taki sposób, aby zawsze działał prawidłowo, bez względu na to czy powodem braku połączenia z serwerem jest uterka fizyczna, czy system operacyjny, czy inne aplikacje (to masz zrobione). Drugim zabezpieczeniem jakie powinieneś zaimplementować jest mechanizm synchronizacji kodu pobierania i tu standardowym zabiegiem jest wątek poboczny (tego brakuje).

0

Dzięki za linki @kAzek. Rozjaśniły mi temat i dodawanie do wyjątków już działa.
Oczywiście samo dodanie do wyjątków zrobię z poziomu instalatora, bo tak jak pisałem, chcę, żeby użytkownik wiedział co się dzieje z aplikacją.
@furious programming dzięki za podpowiedź z wątkami. Myślę, że to będzie dobre rozwiązanie.

0

Z wątków pobocznych korzysta się w różnych programach - np. Total Commander w ten sposób komunikuje się z serwerem, dając możliwość przerwania pobierania czy wysyłania danych na FTP. Można kliknąć Cancel i anulować operację - interfejs jest dostępny.

Przy czym zaznaczyć należy, że wątek poboczny nie spowoduje, że transmisja zostanie przerwana natychmiastowo - umożliwi jedynie interakcję z interfejsem, a time-out i tak musi nadejść.

1 użytkowników online, w tym zalogowanych: 0, gości: 1