一、 添加 COM 引用

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

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

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using NetFwTypeLib;
  6.  
  7. namespace Common
  8. {
  9. public static class INetFwManger
  10. {
  11. /// <summary>
  12. /// 添加防火墙例外端口
  13. /// </summary>
  14. /// <param name="name">名称</param>
  15. /// <param name="port">端口</param>
  16. /// <param name="protocol">协议(TCP、UDP)</param>
  17. public static void NetFwAddPorts(string name, int port, string protocol)
  18. {
  19. //创建firewall管理类的实例
  20. INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
  21.  
  22. INetFwOpenPort objPort = (INetFwOpenPort)Activator.CreateInstance(
  23. Type.GetTypeFromProgID("HNetCfg.FwOpenPort"));
  24.  
  25. objPort.Name = name;
  26. objPort.Port = port;
  27. if (protocol.ToUpper() == "TCP")
  28. {
  29. objPort.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;
  30. }
  31. else
  32. {
  33. objPort.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP;
  34. }
  35. objPort.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
  36. objPort.Enabled = true;
  37.  
  38. bool exist = false;
  39. //加入到防火墙的管理策略
  40. foreach (INetFwOpenPort mPort in netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts)
  41. {
  42. if (objPort == mPort)
  43. {
  44. exist = true;
  45. break;
  46. }
  47. }
  48. if (!exist) netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(objPort);
  49. }
  50. /// <summary>
  51. /// 将应用程序添加到防火墙例外
  52. /// </summary>
  53. /// <param name="name">应用程序名称</param>
  54. /// <param name="executablePath">应用程序可执行文件全路径</param>
  55. public static void NetFwAddApps(string name, string executablePath)
  56. {
  57. //创建firewall管理类的实例
  58. INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
  59.  
  60. INetFwAuthorizedApplication app = (INetFwAuthorizedApplication)Activator.CreateInstance(
  61. Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication"));
  62.  
  63. //在例外列表里,程序显示的名称
  64. app.Name = name;
  65.  
  66. //程序的路径及文件名
  67. app.ProcessImageFileName = executablePath;
  68.  
  69. //是否启用该规则
  70. app.Enabled = true;
  71.  
  72. //加入到防火墙的管理策略
  73. netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);
  74.  
  75. bool exist = false;
  76. //加入到防火墙的管理策略
  77. foreach (INetFwAuthorizedApplication mApp in netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications)
  78. {
  79. if (app == mApp)
  80. {
  81. exist = true;
  82. break;
  83. }
  84. }
  85. if (!exist) netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);
  86. }
  87. /// <summary>
  88. /// 删除防火墙例外端口
  89. /// </summary>
  90. /// <param name="port">端口</param>
  91. /// <param name="protocol">协议(TCP、UDP)</param>
  92. public static void NetFwDelApps(int port,string protocol)
  93. {
  94. INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
  95. if (protocol == "TCP")
  96. {
  97. netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Remove(port, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP);
  98. }
  99. else
  100. {
  101. netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Remove(port, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP);
  102. }
  103. }
  104. /// <summary>
  105. /// 删除防火墙例外中应用程序
  106. /// </summary>
  107. /// <param name="executablePath">程序的绝对路径</param>
  108. public static void NetFwDelApps(string executablePath)
  109. {
  110. INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
  111.  
  112. netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Remove(executablePath);
  113.  
  114. }
  115. }
  116. }

  转载:http://sdfiyon.iteye.com/blog/1197511

C#添加删除防火墙例外(程序、端口)的更多相关文章

  1. firewalld添加/删除服务service,端口port

    启动CentOS/RHEL 7后,防火墙规则设置由firewalld服务进程默认管理. 一个叫做firewall-cmd的命令行客户端支持和这个守护进程通信以永久修改防火墙规则. # firewall ...

  2. Installshield 添加应用程序到防火墙例外

    function AddProcessFwauthor() STRING szCServer,szFServer,szTmp; OBJECT objFirewall, objProfile, objC ...

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

    文章转自:http://sdfiyon.iteye.com/blog/1197511 一.添加 COM 引用 在引用里,选择 COM 页, 找到 NetFwTypeLib , 确定即可 二.添加允许通 ...

  4. FileZilla FTP Server 高级防火墙例外

    在防火墙中: 在“例外”中,添加端口21,TCP 添加端口50000,TCP (或添加一组端口,一个一个的也行,如果你在软件中选择的是50000-51000,而在这里只打开了50000的单个端口,登录 ...

  5. Windows批量添加防火墙例外端口

    Windows下批量添加防火墙例外端口,查了网上资料,基本上都是使用"Netsh命令",循环增加端口,这会导致建立的规则特别多,不便于管理,查了下微软的资料,原来是Netsh命令, ...

  6. centos 7.0 修改ssh默认连接22端口 和 添加防火墙firewalld 通过端口

    首先 先做的就是 修改ssh的默认端口22 需要修改文件 /etc/ssh/sshd_config 使用命令 vi /etc/ssh/sshd_config [root@localhost ~]# v ...

  7. 添加删除程序无法安装IIS 提示没法加载模块

    添加删除程序无法安装IIS 提示没法加载模块 安装iis的时候提示 解决办法:依次是 属性--高级--系统变量--Path  变量值是:%SystemRoot%\system32;%SystemRoo ...

  8. windows 2003添加删除windows组件中无iis应用程序服务器项的解决方法

    解决方法如下: 1.开始 -- 运行,输入 c:\Windows\inf\sysoc.inf,会打开这个文件;在sysoc.inf中找到"[Components]"这一段,并继续找 ...

  9. DHTMLX 前端框架 建立你的一个应用程序 教程(十一)--添加/删除表格中的记录

    添加/删除表格中的记录 我们的最终功能是在表格中添加删除 我们通过单机工具栏上的按钮来实现添加删除 当我们单击添加按钮的时候, 表单中 第一行默认填写New contact 光标自动聚焦 当用户点击删 ...

随机推荐

  1. 使用MySQL客户端登录Ensemble数据库查询相关信息

    Ensemble公共MySQL数据库 对于大量数据和更详细的分析,Ensemble的MySQL服务器ensembldb.ensembl.org,useastdb.ensembl.org或asiadb. ...

  2. .NET中的泛型委托

    .Net中有一个内置的委托 Func 它总共有以下5种形式 1.  Func<TResult> 2.  Func<T,TResult> 3.  Func<T1,T2,TR ...

  3. Smtp错误码

    Smtp错误码列表及相关原因 错误总表 420 1. Timeout Communication Problem Encountered During Transmission. Thie Is a ...

  4. 《OD Docker实战》Docker从入门到精通

    一. 安装Docker http://wiki.jikexueyuan.com/project/docker-technology-and-combat/ https://mos.meituan.co ...

  5. python numpy 判断ndarray 中是否有 nan

    numpy.isnan(myarray).any() 下面讨论了哪一种方法的速度最快 reference: stackoverflow.com/questions/911871/detect-if-a ...

  6. cf837E(xjb)

    题目链接:http://codeforces.com/problemset/problem/837/E 题意:f(a, 0) = 0 ,     f(a, b) = 1 + f(a, b - gcd( ...

  7. 洛谷P1171 售货员的难题

    P1171 售货员的难题 题目背景 数据有更改 题目描述 某乡有n个村庄(1<n<20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且 ...

  8. 洛谷P3193 [HNOI2008]GT考试(KMP,矩阵)

    传送门 大佬讲的真吼->这里 首先考虑dp,设$f[i][j]$表示长串匹配到第$i$位,短串最多匹配到$j$位时的方案数 那么答案就是$\sum_{i=0}^{m-1}f[n][i]$ 然后考 ...

  9. UVA12230 过河 Crossing Rivers

    题目描述 一个人每天需要从家去往公司,然后家与公司的道路是条直线,长度为 \(D\). 同时路上有 \(N\)条河,给出起点和宽度\(W_i\) , 过河需要乘坐速度为\(V_i\) 的渡船; 船在河 ...

  10. 响应式Web

    响应式布局的核心是:适配不同视口大小的流式布局. RWD和AWD RWD:Responsive Web Design AWD:Adaptive Web Design 实现RWD,多使用流式布局.针对所 ...