C# 添加修改防火墙端口及程序

文章转自:http://sdfiyon.iteye.com/blog/1197511

一、添加 COM 引用

在引用里,选择 COM 页, 找到 NetFwTypeLib , 确定即可

二、添加允许通过防火墙的例外程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NetFwTypeLib;

namespace Common
{
    public static class INetFwManger
    {
        /// <summary>
        /// 添加防火墙例外端口
        /// </summary>
        /// <param name="name">名称</param>
        /// <param name="port">端口</param>
        /// <param name="protocol">协议(TCP、UDP)</param>
        public static void NetFwAddPorts(string name, int port, string protocol)
        {
            //创建firewall管理类的实例
            INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));

            INetFwOpenPort objPort = (INetFwOpenPort)Activator.CreateInstance(
                Type.GetTypeFromProgID("HNetCfg.FwOpenPort"));

            objPort.Name = name;
            objPort.Port = port;
            if (protocol.ToUpper() == "TCP")
            {
                objPort.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;
            }
            else
            {
                objPort.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP;
            }
            objPort.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
            objPort.Enabled = true;

            bool exist = false;
            //加入到防火墙的管理策略
            foreach (INetFwOpenPort mPort in netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts)
            {
                if (objPort == mPort)
                {
                    exist = true;
                    break;
                }
            }
            if (!exist) netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(objPort);
        }
        /// <summary>
        /// 将应用程序添加到防火墙例外
        /// </summary>
        /// <param name="name">应用程序名称</param>
        /// <param name="executablePath">应用程序可执行文件全路径</param>
        public static void NetFwAddApps(string name, string executablePath)
        {
            //创建firewall管理类的实例
            INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));

            INetFwAuthorizedApplication app = (INetFwAuthorizedApplication)Activator.CreateInstance(
                Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication"));

            //在例外列表里,程序显示的名称
            app.Name = name;

            //程序的路径及文件名
            app.ProcessImageFileName = executablePath;

            //是否启用该规则
            app.Enabled = true;

            //加入到防火墙的管理策略
            netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);

            bool exist = false;
            //加入到防火墙的管理策略
            foreach (INetFwAuthorizedApplication mApp in netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications)
            {
                if (app == mApp)
                {
                    exist = true;
                    break;
                }
            }
            if (!exist) netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);
        }
        /// <summary>
        /// 删除防火墙例外端口
        /// </summary>
        /// <param name="port">端口</param>
        /// <param name="protocol">协议(TCP、UDP)</param>
        public static void NetFwDelApps(int port,string protocol)
        {
            INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
            if (protocol == "TCP")
            {
                netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Remove(port, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP);
            }
            else
            {
                netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Remove(port, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP);
            }
        }
        /// <summary>
        /// 删除防火墙例外中应用程序
        /// </summary>
        /// <param name="executablePath">程序的绝对路径</param>
        public static void NetFwDelApps(string executablePath)
        {
            INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));

            netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Remove(executablePath);

        }
    }
}
时间: 2024-11-01 14:39:30

C# 添加修改防火墙端口及程序的相关文章

linux下修改防火墙端口对外开放方法

CentOS7的防火墙换成了firewall了,这里做一些记录,下面是一些命令:添加例外端口:# firewall-cmd --add-port=8080/tcp删除例外端口:# firewall-cmd --remove-port=8080/tcp查看例外端口:# firewall-cmd --query-port=8080/tcp 如果想永久添加,加上permanent参数,如:# firewall-cmd --permanent --add-port=8080/tcp

docker高级应用之智能添加与修改防火墙规则

如果你有以下痛苦: 1.使用默认docker0桥接方式: 2.修改防火墙规则的话,使用手动修改配置: 3.并且修改时候还得计算来源端口,防止重复端口使用户登陆错误容器: 4.并当容器意外重启,内网ip变化后还得修改规则 那么你可以看看本文了,对你这些痛处都有解决方法. 目前docker容器设置访问规则的话,就2个方法 1.在docker容器创建的时候,使用-p来设置 2.在容器运行中,获取容器的ip,然后在宿主机的iptables力通过nat链做dnat设置 我之前一直使用第2个方法,但随着我d

修改防火墙禁用的80端口

1.打开iptables的配置文件: vi /etc/sysconfig/iptables 2.修改vi /etc/sysconfig/iptables命令添加使防火墙开放80端口 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 2.关闭/开启/重启防火墙 停止 /etc/init.d/iptables stop 开启 /etc/init.d/iptables  start 重启 /et

NFSv3 NFSv3针对防火墙端口开通策略 生产环境实践

针对NFSv4版本需要服务官方说明: NFS version 4 (NFSv4) works throughfirewalls and on the Internet, no longer requires an rpcbind service, supportsACLs, and utilizes stateful operations. Red Hat Enterprise Linux 6 supportsNFSv2, NFSv3, and NFSv4 clients. When mount

修改防火墙

防火墙问题:添加22端口到防火墙 系统:Centos7 开启防火墙:systemctl start firewalld关闭防火墙:systemctl stop firewalld 开机自动启动防火墙:systemctl enable firewalld开机不自动启动防火墙:systemctl disable firewalld 方式一:图像化界面:1.点击左上角应用程序->杂项->防火墙 2.点击配置修改为永久状态注意:修改防火墙配置的时候需要将配置改为永久状态,否则reload的时候不会生效

Windows Server 系列服务器之轻松修改远程端口

Windows系列的服务器,远程端口号默认的是3389,当然,一些服务器服务商可能会是其他的端口.在生产环境中,对于服务器安全来讲.修改远程端口和屏蔽一些不用的端口是非常有必要的.在安装好服务器系统后,通常情况下,管理员总是需要对远程端口进行管理.当然了,您可能自己有编写过一些.或者手上已经拥有了很不错.用来管理远程端口,甚至是对服务器端口,所需服务一键安装的程序,那么您不用再往下看了. 特别提示:请一定留意下"注意"内容,(见最下面.) 对于windows服务器来讲,远程端口由 HK

centos下配置防火墙端口失败

问题:将规则添加到防火墙中,总是端口无法开启 (1)修改文件 首先vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5001:5009 -j ACCEPT(允许5001到5009的端口通过防火墙) 接着执行/etc/init.d/iptables restart (重启防火墙使配置生效). 因将该句加在文件末尾,导致防火墙重启后端口仍然无法使用. (2)解决方法 应该在默认的22端口这条

linux修改ssh端口

该教程是目前最安全的教程,如果你是新手请严格按照教程的步骤进行,如果是有一定基础的人可以选择性跳过某些段落 修改端口配置 先运行 vim /etc/ssh/sshd_config 找到#Port 22 这行然后去掉前面的注释,然后再下面加一行 Port 1234 Port 22   Port 1234 很多教程是直接修改22为其他端口,最好不要这样做,万一修改的端口不能用,你就完全登陆不上了,所以先留一条后路 修改防火墙配置 修改iptables(linux 的防火墙)文件: vim /etc/

linux配置防火墙端口

通过 /etc/sysconfig/iptables 来配置 -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙)-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙) (一般装完系统会默认添加了22端口,可按照其格式配置其他端口)特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火