using NetFwTypeLib;
/// <summary>
/// WINDOWS防火墙添加例外程序
/// </summary>
/// <param name="name">程序名称</param>
/// <param name="filename">程序的绝对路径</param>
public static void AddNewExceptions(string name, string filename)
{
//创建firewall管理接口的实例
INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
//创建一个认证程序接口的实例
INetFwAuthorizedApplication app = (INetFwAuthorizedApplication)Activator.CreateInstance(
Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication"));
//在例外列表里,程序显示的名称
app.Name = name;
//程序的绝对路径,这里使用程序本身
app.ProcessImageFileName = filename;
//是否启用该规则
app.Enabled = true;
//加入到防火墙的管理策略
netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);
}
/// <summary>
/// WINDOWS防火墙添加例外端口
/// </summary>
/// <param name="name">端口名</param>
/// <param name="portNum">端口号</param>
/// <param name="type">端口类型</param>
public static void AddNewPort(string name,int portNum,NET_FW_IP_PROTOCOL_ type)
{
//创建firewall管理接口的实例
INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
//创建端口接口实例
INetFwOpenPort port = (INetFwOpenPort)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwOpenPort"));
//端口名
port.Name = name;
//端口号
port.Port = portNum;
//协议类型
port.Protocol = type;
//启用
port.Enabled = true;
//添加
netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(port);
}