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

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

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

防火墙管理器通过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 -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

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

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

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

通常,防火墙会记录尝试从计算机连接到计算机的成功与否,您可以检查它。

*更新

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