C# 操作防火墙

添加防火墙需要应用具有管理员权限,
首先添加com引用,NetFwTypeLib
允许单个程序通过全部端口

//创建一个认证程序类的实例
INetFwAuthorizedApplication app = (INetFwAuthorizedApplication)Activator.CreateInstance(
Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication"));
//在例外列表里,程序显示的名称
app.Name = "ReceiveFileFromAndroid";
//程序的绝对路径
app.ProcessImageFileName = AppDomain.CurrentDomain.BaseDirectory + "xxx.exe";
//是否启用该规则
app.Enabled = true;
//加入到防火墙的管理策略
netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);

开放某个端口,允许全部程序通过

/// <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 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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值