检测Windows防火墙是否阻止了我的程序

时间:2011-08-04 14:27:17

标签: c# windows-firewall

我有一个通过api与NetApp设备通信的应用程序。启用Windows防火墙后,api命令将失败。关闭防火墙后,api命令可以正常工作。我没有收到任何消息,如“Windows防火墙阻止此程序”。

查看文档我相信我发现需要打开的TCP端口才能使api命令工作。如何以编程方式检测端口是否被阻塞,以便我可以向用户显示有关潜在问题的消息?

4 个答案:

答案 0 :(得分:11)

防火墙管理器通过COM公开自己并实现IsPortAllowed,这里是与管理员交互的interop example

答案 1 :(得分:8)

我认为你可以这样做:尝试一下: 更改要检查的端口的1433.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;

namespace CheckPortStatus
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                TcpClient tcp = new TcpClient();
                tcp.Connect("localhost", Convert.ToInt16(1433));
                Console.WriteLine("online");
            }
            catch (Exception ex)
            {
                Console.WriteLine("offline");
                Console.WriteLine(ex.Message);
            }
        }
    }
}

另外,要查看机器运行中可用的端口:

C:> netstat -an | find / i“listening”

TCP 0.0.0.0:25 0.0.0.0:0 LISTENING

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING

答案 2 :(得分:3)

要检测端口是否被阻止 - 在Win7上,您可以通过打开Windows防火墙查看窗口防火墙日志 - 单击左侧的“高级设置”,然后打开“监控”分支。

请注意,在“日志记录设置”部分的“监视”选项卡上,有一个选项可以登录到我的Win7 PC上%systemroot%\system32\LogFiles\Firewall\pfirewall.log的文件 - 您可以解析此文件。我在过去已经研究过,并且有一些实用工具可以帮助你,但是,在一天结束时它只是一个标准格式的日志文件。

答案 3 :(得分:1)

我怀疑防火墙会提到它阻止了应用程序,否则入侵者可以获得有关阻止他访问系统的信息:-)。

通常,防火墙会尝试连接计算机和计算机,无论是否成功,都可以检查。

<强>更新*

您可以在网络中尝试Acknowledgement。如果您在一定时间内没有收到任何信息,那么您可以放心地说连接存在问题。