`
sdfiyon
  • 浏览: 22060 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

C#添加删除防火墙例外(程序、端口)

    博客分类:
  • .Net
阅读更多

一、 添加 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);

        }
    }
}


 

分享到:
评论

相关推荐

    c# 添加程序或者端口到防火墙例外

    c# 网络通讯会遇到端口被防火墙屏蔽的问题,或者端口长时间不交互也会被防火墙屏蔽,此类可加入exe或者端口到防火墙例外,程序要以管理员运行,亲测有效

    c# 防火墙添加/删除 特定端口的示例

    针对将特定端口加入到windows系统的防火墙中,使其允许或禁止通过防火墙。... /// 添加防火墙例外端口 /// /// 名称 /// 端口 /// 协议(TCP、UDP) /// 范围类型 /// 自定义范围时的IP地址范围&lt;/p

    C# 设置防火墙的创建规则

    对于某些程序,我们只允许它使用某些特定端口、网络类型或者特定IP类型等信息。这时候,需要使用到防火墙里面的“高级.../// 为WindowsDefender防火墙添加一条通信端口出站规则 /// /// 规则类型 /// &lt;param nam

    在windows上禁用高危端口操作手册

    在Windows操作系统中,为了增强系统的安全性,有时需要禁用一些高危端口,这些端口通常与不安全的服务或常见的...如果需要允许某些特定服务通过这些端口,可以创建例外规则,以确保系统在保持安全的同时保持功能正常。

    C#数据库备份、还原、附加和分离(源代码)

    要使用本工具,必须进行必要的设置,包括:1、在windows中防火墙的设置例外(sqlserver程序例外和1433端口例外);2、在sql2005配置管理器中,打开TCP/IP,在IP地址中的TCP端口号设为1433;3、sql server外围配置中...

    oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法

    (2)在防火墙中添加,orcale端口1521例外。 您可能感兴趣的文章:常用的Oracle doc命令(收藏)Oracle 多行记录合并/连接/聚合字符串的几种方法Oracle中字符串连接的实现方法php连接oracle数据库及查询数据的方法...

    关于.net和C#的一些知识文档

    - **Windows防火墙设置**:确保1433端口未被防火墙阻止,可以添加端口例外。 最后,我们提到了SQL Server连接中的常见问题: 6. **SQL Server连接错误**: - "SQL Server不存在或访问被拒绝":这个错误可能是由...

    Kesoft.Windows.NetFirewallHelper:NET 防火墙助手

    防火墙例外帮助类 提供添加防火墙例外的简单接口,用于添加或移除基于应用程序或端口的例外。 如何下载 Nuget地址: 如何使用 以下是两种方式的使用方法。

    ArcGIS Server安装说明文档

    2. 调整Windows防火墙设置:添加ArcGIS Server所需的服务和端口例外,如Web Port (HTTP)的80端口,DCOM (ArcGIS Server)的135端口,以及ArcSOM.exe和ArcSOC.exe作为例外程序。 3. 解决IIS配置问题:如果Manager程序...

Global site tag (gtag.js) - Google Analytics