服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - c# 防火墙添加/删除 特定端口的示例

c# 防火墙添加/删除 特定端口的示例

2022-10-12 13:45一只独行的猿 C#

这篇文章主要介绍了c# 如何将特定端口加入防火墙中,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下

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

c# 防火墙添加/删除 特定端口的示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/// <summary>
 /// 添加防火墙例外端口
 /// </summary>
 /// <param name="name">名称</param>
 /// <param name="port">端口</param>
 /// <param name="protocol">协议(TCP、UDP)</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管理类的实例: Type的GetTypeFromProgID是通过注册表信息项目创建实例类型
   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);
 }

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/// <summary>
 /// 删除防火墙例外端口
 /// </summary>
 /// <param name="port">端口</param>
 /// <param name="protocol">协议(TCP、UDP)</param>
public static void DeletePortsUseFirewall(int port, string protocol)
{
  //创建firewall管理类的实例: Type的GetTypeFromProgID是通过注册表信息项目创建实例类型
  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);
  }
}

以上就是c# 防火墙添加/删除特定端口的示例的详细内容,更多关于c# 防火墙添加/删除端口的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/pilgrim/p/11167461.html

延伸 · 阅读

精彩推荐
  • C#C#汉字转拼音实例(支持多音字)

    C#汉字转拼音实例(支持多音字)

    几年前就在网上看到过汉字转拼音的程序,大都就是按汉字的编码转换,单字对应的算法实现的。但是都有一个共同的缺点,不能支持多音字。本篇文章主...

    最爱晴天5902021-12-15
  • C#C#基础知识之this关键字介绍

    C#基础知识之this关键字介绍

    本文主要介绍this关键字的几种使用方法,this可以代表当前实例,可以调用其他构造函数,还可以用来构建索引器,这里都有一一举例说明。...

    Swich3732021-11-19
  • C#浅析C# 装箱和拆箱

    浅析C# 装箱和拆箱

    这篇文章主要介绍了C# 装箱和拆箱的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    拭不去の泪痕11572022-09-22
  • C#分享C#中几个可用的类

    分享C#中几个可用的类

    这篇文章主要为大家分享了C#中几个可用的类,并给出了几个例子进行讲解,感兴趣的小伙伴们可以参考一下...

    天尽头的那片海5682021-11-21
  • C#C#数据导入到EXCEL的方法

    C#数据导入到EXCEL的方法

    今天小编就为大家分享一篇关于C#数据导入到EXCEL的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    chenqiangdage6132022-03-08
  • C#C# Web应用调试开启外部访问步骤解析

    C# Web应用调试开启外部访问步骤解析

    本文主要介绍了C# Web应用调试开启外部访问的实现过程与方法。具有一定的参考价值,下面跟着小编一起来看下吧...

    polk65512021-12-18
  • C#C#编程实现DataTable添加行的方法

    C#编程实现DataTable添加行的方法

    这篇文章主要介绍了C#编程实现DataTable添加行的方法,结合两个实例形式分析了C#操作DataTable实现动态添加行的相关技巧,具有一定参考借鉴价值,需要的朋友可...

    Jan.David3672021-11-03
  • C#详解C# 泛型中的数据类型判定与转换

    详解C# 泛型中的数据类型判定与转换

    这篇文章主要介绍了C# 泛型中的数据类型判定与转换,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    汐夜3682022-09-27