LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 防火墙操作之特定端口

admin
2021年3月24日 22:59 本文热度 2366

针对将特定端口加入到windows系统的防火墙中,使其允许或禁止通过防火墙。其大概思路是:

/// <summary>

 /// 添加防火墙例外端口

 /// </summary>

 /// <param name="name">名称</param>

 /// <param name="port">端口</param>

 /// <param name="protocol">协议(TCPUDP)</param>

 /// <param name="scope">范围类型</param>

 /// <param name="remoteAddresses">自定义范围时的IP地址范围</param>

 public static void AllowPortsUseFirewall(string name, int port, string protocol, NET_FW_SCOPE_ scope,string remoteAddresses)

 {

     //创建firewall管理类的实例: TypeGetTypeFromProgID是通过注册表信息项目创建实例类型

     INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));

 

     //判断网络类型,是TCP还是UDP

     NET_FW_IP_PROTOCOL_ protocolType = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP;

     if (protocol.ToUpper() == "TCP")

     {

         protocolType = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;

     }

     //查找以前是否有相同的规则创建,如果有则不再创建新的规则

     foreach (INetFwOpenPort mPort in netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts)

     {

         if (mPort.Protocol == protocolType && mPort.Port == port)

         {

             return;

         }

     }

     //创建一个防火墙端口管理实例

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

     //设置端口实例名称

     objPort.Name = name;

     //设置端口信息

     objPort.Port = port;

     //端口管理的网络类型

     objPort.Protocol = protocolType;

     /*

      *      NET_FW_SCOPE_ALL  范围是所有地址。

      *      NET_FW_SCOPE_CUSTOM 自定义范围。

      *      NET_FW_SCOPE_LOCAL_SUBNET 范围是本地子网。

      *      NET_FW_SCOPE_MAX  使用仅用于测试。不意味着为应用程序实现。

      */

      //端口的范围,针对哪类或哪个IP地址

     objPort.Scope = scope;

     //此处可以指定IP地址版本信息

     //objPort.IpVersion = NET_FW_IP_VERSION_.NET_FW_IP_VERSION_V4;

     //自定义IP地址范围

     if (objPort.Scope == NET_FW_SCOPE_.NET_FW_SCOPE_CUSTOM)

     {

         //这而需要移除多个地址之间的空白字符串,有空白字符串会出现设置异常

         objPort.RemoteAddresses = remoteAddresses.Replace(" ", ""); ;//"192.168.1.10,192.168.1.12.......";

     }

     //是否启用规则

     objPort.Enabled = true;

     //加入到本地防火墙管理规则中。

     netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(objPort);

 }


删除规则比较简单:创建防火墙实例,直接移除某种通信类型的端口就行:

/// <summary>
/// 删除防火墙例外端口
/// </summary>
/// <param name="port">端口</param>
/// <param name="protocol">协议(TCPUDP</param>
public static void DeletePortsUseFirewall(int port, string protocol)
{
    //创建firewall管理类的实例: TypeGetTypeFromProgID是通过注册表信息项目创建实例类型
    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);
    }
}

该文章在 2021/3/24 22:59:16 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved