C#添加删除防火墙例外(程序、端口)
一、 添加 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);
- }
- }
- }
转载:http://sdfiyon.iteye.com/blog/1197511
C#添加删除防火墙例外(程序、端口)的更多相关文章
- firewalld添加/删除服务service,端口port
启动CentOS/RHEL 7后,防火墙规则设置由firewalld服务进程默认管理. 一个叫做firewall-cmd的命令行客户端支持和这个守护进程通信以永久修改防火墙规则. # firewall ...
- Installshield 添加应用程序到防火墙例外
function AddProcessFwauthor() STRING szCServer,szFServer,szTmp; OBJECT objFirewall, objProfile, objC ...
- C# 添加修改防火墙端口及程序
文章转自:http://sdfiyon.iteye.com/blog/1197511 一.添加 COM 引用 在引用里,选择 COM 页, 找到 NetFwTypeLib , 确定即可 二.添加允许通 ...
- FileZilla FTP Server 高级防火墙例外
在防火墙中: 在“例外”中,添加端口21,TCP 添加端口50000,TCP (或添加一组端口,一个一个的也行,如果你在软件中选择的是50000-51000,而在这里只打开了50000的单个端口,登录 ...
- Windows批量添加防火墙例外端口
Windows下批量添加防火墙例外端口,查了网上资料,基本上都是使用"Netsh命令",循环增加端口,这会导致建立的规则特别多,不便于管理,查了下微软的资料,原来是Netsh命令, ...
- centos 7.0 修改ssh默认连接22端口 和 添加防火墙firewalld 通过端口
首先 先做的就是 修改ssh的默认端口22 需要修改文件 /etc/ssh/sshd_config 使用命令 vi /etc/ssh/sshd_config [root@localhost ~]# v ...
- 添加删除程序无法安装IIS 提示没法加载模块
添加删除程序无法安装IIS 提示没法加载模块 安装iis的时候提示 解决办法:依次是 属性--高级--系统变量--Path 变量值是:%SystemRoot%\system32;%SystemRoo ...
- windows 2003添加删除windows组件中无iis应用程序服务器项的解决方法
解决方法如下: 1.开始 -- 运行,输入 c:\Windows\inf\sysoc.inf,会打开这个文件;在sysoc.inf中找到"[Components]"这一段,并继续找 ...
- DHTMLX 前端框架 建立你的一个应用程序 教程(十一)--添加/删除表格中的记录
添加/删除表格中的记录 我们的最终功能是在表格中添加删除 我们通过单机工具栏上的按钮来实现添加删除 当我们单击添加按钮的时候, 表单中 第一行默认填写New contact 光标自动聚焦 当用户点击删 ...
随机推荐
- 使用MySQL客户端登录Ensemble数据库查询相关信息
Ensemble公共MySQL数据库 对于大量数据和更详细的分析,Ensemble的MySQL服务器ensembldb.ensembl.org,useastdb.ensembl.org或asiadb. ...
- .NET中的泛型委托
.Net中有一个内置的委托 Func 它总共有以下5种形式 1. Func<TResult> 2. Func<T,TResult> 3. Func<T1,T2,TR ...
- Smtp错误码
Smtp错误码列表及相关原因 错误总表 420 1. Timeout Communication Problem Encountered During Transmission. Thie Is a ...
- 《OD Docker实战》Docker从入门到精通
一. 安装Docker http://wiki.jikexueyuan.com/project/docker-technology-and-combat/ https://mos.meituan.co ...
- python numpy 判断ndarray 中是否有 nan
numpy.isnan(myarray).any() 下面讨论了哪一种方法的速度最快 reference: stackoverflow.com/questions/911871/detect-if-a ...
- cf837E(xjb)
题目链接:http://codeforces.com/problemset/problem/837/E 题意:f(a, 0) = 0 , f(a, b) = 1 + f(a, b - gcd( ...
- 洛谷P1171 售货员的难题
P1171 售货员的难题 题目背景 数据有更改 题目描述 某乡有n个村庄(1<n<20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且 ...
- 洛谷P3193 [HNOI2008]GT考试(KMP,矩阵)
传送门 大佬讲的真吼->这里 首先考虑dp,设$f[i][j]$表示长串匹配到第$i$位,短串最多匹配到$j$位时的方案数 那么答案就是$\sum_{i=0}^{m-1}f[n][i]$ 然后考 ...
- UVA12230 过河 Crossing Rivers
题目描述 一个人每天需要从家去往公司,然后家与公司的道路是条直线,长度为 \(D\). 同时路上有 \(N\)条河,给出起点和宽度\(W_i\) , 过河需要乘坐速度为\(V_i\) 的渡船; 船在河 ...
- 响应式Web
响应式布局的核心是:适配不同视口大小的流式布局. RWD和AWD RWD:Responsive Web Design AWD:Adaptive Web Design 实现RWD,多使用流式布局.针对所 ...