侧边栏壁纸
  • 累计撰写 74 篇文章
  • 累计创建 45 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

C#给应用程序添加防火墙规则配置

码峰
2022-09-21 / 0 评论 / 0 点赞 / 70 阅读 / 367 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-09-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

问题描述

有网络访问要求的应用程序,比如程序监听某一网络端口,如果Windows系统有防火墙限制,则可能程序无法收到网络请求或者UDP网络包,此时要么关闭掉防火墙(不推荐),要么给程序添加到信任列表,或者给程序添加防火墙规则。虽然可以手动做这些配置,但应用分发后,不方便让客户自己去做这个操作,所以使用程序来配置就变为尤为必要了。下面将介绍在C#中如何添加防火墙规则。

解决办法

添加引用NetFwTypeLib.dll

这个动态库在系统目录中:
64位程序引用这个路径:C:\Windows\System32\FirewallAPI.dll
32位程序引用这个路径:C:\Windows\SysWOW64\FirewallAPI.dll

配置代码

以下是添加允许APP所有网络访问规则的示例代码。

using System;
using System.Collections.Generic;
using System.Text;
using NetFwTypeLib;
namespace FireWallTest
{
    public class FireWallHelp
    {
        public static void Main()
        {
            NetFwAllowAppsAll("App name", "app absolute path");
        }
        
        public static void NetFwAllowAppsAll(string name, string executablePath)
        {
            INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
            firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
            firewallRule.Description = "Allow all for  " + name;
            firewallRule.ApplicationName = executablePath;
            firewallRule.Enabled = true;
            firewallRule.InterfaceTypes = "All";
            firewallRule.Name = name;
            INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
                Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
            firewallPolicy.Rules.Add(firewallRule);
        }
    }
}

原文网址:https://www.cfnotes.com/archives/162 转载请注明出处

0

评论区