Detect if windows firewall is blocking my program

僤鯓⒐⒋嵵緔 提交于 2019-11-28 06:35:16

The firewall manager exposes itself via COM and implements an IsPortAllowed, here is an interop example of interacting with the manager.

You can do it like this I think: give it a try: Change 1433 for the port you want to check.

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);
            }
        }
    }
}

Also, to see which ports are available in your machine run:

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

To detect if the ports are blocked - on Win7 you can view the Window Firewall logs by opening Windows Firewall - click Advanced Settings on the left-side and then open the Monitoring branch.

Note on the Monitoring tab in the Logging Settings section there is an option to log to file which on my Win7 PC is %systemroot%\system32\LogFiles\Firewall\pfirewall.log - you could just parse this file. I have researched in the past and there are utilities out there to do this for you, however, at the end of the day it's just a standard format log file.

I doubt that the firewall will mention that it's blocking the application, otherwise intruder can have a information on what's preventing him to access the system :-).

Usually, firewalls logs attempts to connect from and to the computer, successful or not, you can check it.

Update*

you may try Acknowledgement in the network. If you received none for certain amount of time, then you can safely say that there's a problem in the connection.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!