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

本文关键字:我的 程序 windows 防火墙 是否 检测 | 更新日期: 2023-09-27 18:04:35

我有一个应用程序,通过他们的api与NetApp设备通信。在windows防火墙打开的情况下,api命令将失败。关闭防火墙后,api命令可以工作。我没有收到任何类似"Windows防火墙正在阻止此程序"的消息。

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

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

防火墙管理器通过COM公开自己并实现IsPortAllowed

我认为你可以这样做:试一试:更改要检查的端口的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——|发现/我"听"

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

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

注意在日志设置部分的监控选项卡上有一个选项来记录文件,在我的Win7 PC上是%systemroot%'system32'LogFiles'Firewall'pfirewall.log -你可以只是解析这个文件。我过去研究过,有实用程序可以为您完成此操作,但是,在一天结束时,它只是一个标准格式的日志文件。

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

通常,防火墙记录连接和连接计算机的尝试,无论成功与否,您都可以检查它。

更新*

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