LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 防火墙操作之特定程序

admin
2021年3月24日 23:9 本文热度 4037

将特定程序加入防火墙组,与将特定端口加入防火墙流程类似。详情见“C# 防火墙操作之特定端口”。其主要代码为:

/// <summary>
/// 允许应用程序通过防火墙
/// </summary>
/// <param name="appPath">应用程序的绝对路径</param>
/// <exception cref="FileNotFoundException">未找到程序文件</exception>
public static void AllowAppUseFirewall(string appPath)
{
    if(System.IO.File.Exists(appPath)==false)
    {
        throw new System.IO.FileNotFoundException("未找到程序文件");
    }
    //创建firewall管理类的实例: Type的GetTypeFromProgID是通过注册表信息项目创建实例类型
    INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
    //以程序名为规则名创建规则,以便查询
    string name = System.IO.Path.GetFileNameWithoutExtension(appPath);
    NET_FW_PROFILE_TYPE_ currentProfileType = netFwMgr.CurrentProfileType;
    //查找防火墙规则中是否已有同名规则存在
    foreach (INetFwAuthorizedApplication item in netFwMgr.LocalPolicy.GetProfileByType(currentProfileType).AuthorizedApplications)
    {
        if (item.Name == name)
        {
            return;
        }
    }
    //创建一个认证程序类的实例
    INetFwAuthorizedApplication app = (INetFwAuthorizedApplication)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication"));
    
    //在例外列表里,程序显示的名称
    app.Name = name;
    //程序的绝对路径,这里使用程序本身
    app.ProcessImageFileName = appPath;
    //端口的范围,针对哪类或哪个IP地址
    //objPort.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
    //此处可以指定IP地址版本信息
    //objPort.IpVersion = NET_FW_IP_VERSION_.NET_FW_IP_VERSION_V4;
    //是否启用该规则
    app.Enabled = true;
    //加入到防火墙的管理策略
    netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);
}
/// <summary>
/// 移除应用程序通过防火墙
/// </summary>
/// <param name="appPath">应用程序的绝对路径</param> public static void RemoveAppUseFirewall(string appPath) { INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr")); //参数为程序的绝对路径 netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Remove(appPath); }

该文章在 2021/3/24 23:09:14 编辑过

全部评论1

admin
2021年3月24日 23:55

本篇,我們用到了COM引用,因為不使用COM引用的話,操作太過繁瑣了 

一、 添加 COM 引用

在引用里,選擇 COM 頁, 找到 NetFwTypeLib , 確定即可

二、 引入命名空間

using NetFwTypeLib;

三、 添加允許通過防火牆的例外程序

//創建firewall管理類的實例
INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
//創建一個認證程序類的實例
INetFwAuthorizedApplication app = (INetFwAuthorizedApplication)Activator.CreateInstance(
    Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication"));
//在例外列表里,程序顯示的名稱
app.Name = "自定義"; 
//程序的決定路徑,這里使用程序本身
app.ProcessImageFileName = Application.ExecutablePath;
//是否啟用該規則
app.Enabled = true;
//加入到防火牆的管理策略
netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);

四、刪除一個例外 列表 里的程序

INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
//參數為程序的絕對路徑
netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Remove(Application.ExecutablePath);

该评论在 2021/3/24 23:56:16 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved