Как обнаружить брандмауэр в Windows?

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

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


person cfischer    schedule 13.03.2009    source источник


Ответы (3)


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

  • ответьте одним из нескольких различных сообщений 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.

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

person Adam Liss    schedule 13.03.2009

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

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

person Martin K.    schedule 13.03.2009
comment
Доступ к чему в Интернете? В общем, брандмауэр не на машине пользователя; это либо на корпоративной границе, либо на конце цели - брандмауэры (в очень общем случае) не позволяют вам входить, а не выходить из конкретной машины. - person Adam Liss; 13.03.2009

Используйте API брандмауэра Win32 (классический)

person Community    schedule 13.03.2009