Как обнаружить брандмауэр в Windows? - PullRequest
2 голосов
/ 13 марта 2009

Моему приложению нужно отправить запрос GET на веб-сайт, и я бы хотел знать, заблокировано ли оно брандмауэром, и попросить пользователя добавить исключение.

Как я могу узнать, что мой запрос get не выполнен из-за брандмауэра, а не из-за чего-то другого?

Ответы [ 3 ]

6 голосов
/ 13 марта 2009

Если это хороший брандмауэр, вы не можете. Среди других вариантов, межсетевой экран может:

  • ответ с одним из нескольких различных сообщений ICMP , указывающих, что пункт назначения недоступен, или
  • молча отбрасывает запрос, что приводит к тайм-ауту.

Разумный вариант - объяснить, почему приложению не удалось получить доступ к веб-сайту, и предоставить несколько полезных советов:

    No response from www.site.com:
    * Your computer may not be connected to the Internet.
    * The site may be down.
    * The site may be blocked by a firewall.
    The network indicated that www.site.com is not accessible:
    * Helpful messages go here.

Важным моментом является различие, возможно, лучше, чем я делал выше, между типами отказов и причинами , стоящими за ними. Например, действия по устранению неполадок «нет ответа» будут отличаться от действий по устранению неполадок «устройство сообщило мне, что оно не прослушивает этот порт».

1 голос
/ 13 марта 2009

Попробуйте получить доступ к Интернету с коротким таймаутом ... Если команда не выполняется, вы можете предположить, что на машине установлен брандмауэр, который требует взаимодействия с пользователем.

Если брандмауэр исправен, вы не можете его обнаружить.

0 голосов
/ 13 марта 2009

Использовать Win32 Firewall API (классический)

...