下面是针对“c#防火墙添加/删除特定端口的示例”的完整攻略:
1. 了解Windows Firewall API
要使用C#实现防火墙管理,需要用到Windows Firewall API。Windows Firewall API是一组允许开发人员使用来自防火墙策略接口 (WFPSampler) 的函数和结构的编程元素。
首先,我们需要将NETSH ADVFIREWALL FIREWALL ADD RULE
命令转换为C#代码,以便添加和删除特定端口的规则。
添加规则
在C#中添加规则,需要使用以下步骤:
- 先使用
INetFwPolicy2
接口获取防火墙策略对象 - 创建
INetFwRule
对象并设置要添加的规则的属性 - 使用
INetFwPolicy2
的Rules
属性将规则添加到防火墙策略中
using NetFwTypeLib;
// 获取防火墙策略对象
INetFwPolicy2 fwPolicy2 = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
// 创建规则
INetFwRule fwRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
fwRule.Name = "My port rule"; // 规则名称
fwRule.Protocol = (int)NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP; // 使用TCP协议
fwRule.LocalPorts = "8081"; // 监听本地端口8081
fwRule.Enabled = true; // 启用规则
// 添加规则
fwPolicy2.Rules.Add(fwRule);
删除规则
要删除C#中的规则,需要使用以下步骤:
- 先使用
INetFwPolicy2
接口获取防火墙策略对象 - 使用
INetFwPolicy2
的Rules
属性查找要删除的规则 - 使用
INetFwPolicy2
的Rules
属性将规则从防火墙策略中删除
using NetFwTypeLib;
// 获取防火墙策略对象
INetFwPolicy2 fwPolicy2 = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
// 查找规则
string ruleName = "My port rule";
INetFwRule fwRule = null;
foreach (INetFwRule rule in fwPolicy2.Rules)
{
if (rule.Name == ruleName)
{
fwRule = rule;
break;
}
}
if (fwRule != null)
{
// 删除规则
fwPolicy2.Rules.Remove(fwRule.Name);
}
2. 示例
下面是两个示例:一个用于添加规则,另一个用于删除规则。
示例1:添加防火墙规则
以下是一个C#示例,演示如何添加防火墙规则。
using NetFwTypeLib;
// 获取防火墙策略对象
INetFwPolicy2 fwPolicy2 = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
// 创建规则
INetFwRule fwRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
fwRule.Name = "My port rule"; // 规则名称
fwRule.Protocol = (int)NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP; // 使用TCP协议
fwRule.LocalPorts = "8081"; // 监听本地端口8081
fwRule.Enabled = true; // 启用规则
// 添加规则
fwPolicy2.Rules.Add(fwRule);
运行以上代码后,就会将名为"My port rule"的TCP端口规则添加到防火墙策略中。
示例2:删除防火墙规则
以下是一个C#示例,演示如何删除防火墙规则。
using NetFwTypeLib;
// 获取防火墙策略对象
INetFwPolicy2 fwPolicy2 = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
// 查找规则
string ruleName = "My port rule";
INetFwRule fwRule = null;
foreach (INetFwRule rule in fwPolicy2.Rules)
{
if (rule.Name == ruleName)
{
fwRule = rule;
break;
}
}
if (fwRule != null)
{
// 删除规则
fwPolicy2.Rules.Remove(fwRule.Name);
}
运行以上代码后,名为"My port rule"的规则将从防火墙策略中删除。
以上就是关于“c#防火墙添加/删除特定端口的示例”的完整攻略,希望能帮到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 防火墙添加/删除 特定端口的示例 - Python技术站