如何在Windows中检测防火墙?

时间:2009-03-13 14:26:03

标签: http winapi firewall http-get windows-firewall

我的应用需要向网站发出GET请求,我希望能够知道它是否被防火墙阻止,并要求用户添加例外。

如何通过防火墙而不是其他方式找出我的获取请求失败?

3 个答案:

答案 0 :(得分:6)

如果它是一个好的防火墙,你不能。除其他选项外,防火墙还可以:

  • 使用多条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 :(得分:1)

尝试短暂超时访问互联网... 如果命令失败,您可以假设机器具有需要用户交互的防火墙。

如果防火墙状况良好,则无法检测到。

答案 2 :(得分:0)

使用Win32 Firewall apis(经典)