usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingNetFwTypeLib;namespaceCommon
{public static classINetFwManger
{///
///添加防火墙例外端口///
/// 名称
/// 端口
/// 协议(TCP、UDP)
public static void NetFwAddPorts(string name, int port, stringprotocol)
{//创建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 innetFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts)
{if (objPort ==mPort)
{
exist= true;break;
}
}if (!exist) netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(objPort);
}///
///将应用程序添加到防火墙例外///
/// 应用程序名称
/// 应用程序可执行文件全路径
public static void NetFwAddApps(string name, stringexecutablePath)
{//创建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 innetFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications)
{if (app ==mApp)
{
exist= true;break;
}
}if (!exist) netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);
}///
///删除防火墙例外端口///
/// 端口
/// 协议(TCP、UDP)
public static void NetFwDelApps(int port,stringprotocol)
{
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);
}
}///
///删除防火墙例外中应用程序///
/// 程序的绝对路径
public static void NetFwDelApps(stringexecutablePath)
{
INetFwMgr netFwMgr= (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Remove(executablePath);
}
}
}