C# 为WindowsDefender防火墙已经存在的入站规则添加IP地址

复制代码
    /// <summary>
    /// windows防火墙入站规则IP添加器
    /// </summary>
    internal class NetFwRuleIPAdder {
        readonly string ruleName;
        readonly object _lock = new object();
        /// <summary>
        /// 创建一个添加器,可以将指定IP添加到ruleName规则中
        /// </summary>
        /// <param name="ruleName">规则名称</param> 
        public NetFwRuleIPAdder(string ruleName) {
            this.ruleName = ruleName;
        }
        /// <summary>
        /// 获取规则对象
        /// </summary>
        INetFwRule GetNetFwRule() {
            INetFwRule netFwRule = null;
            INetFwPolicy2 netFwPolicy2 = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
            foreach (INetFwRule rule in netFwPolicy2.Rules) {
                if (rule.Name == ruleName && rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN) { //匹配规则名和入站规则
                    netFwRule = rule;
                    break;
                }
            }
            if (netFwRule == null) {
                throw new Exception("未匹配到:" + ruleName + ",请先手动创建该规则");
            }
            return netFwRule;
        }
        /// <summary>
        /// 向当前防火墙规则中添加IP
        /// </summary>
        public void AddIP(string ip) {
            lock (_lock) {
                var netFwRule = GetNetFwRule();
                if (string.IsNullOrEmpty(netFwRule.RemoteAddresses)) {
                    netFwRule.RemoteAddresses = ip;
                } else {
                    if (netFwRule.RemoteAddresses.Split(',').Contains(ip) == false) {
                        netFwRule.RemoteAddresses = netFwRule.RemoteAddresses + "," + ip;
                    }
                }
                LogHelper.Info(ip + " 添加完毕");
            }
        }
    }
复制代码

 

posted @   WmW  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2022-02-24 vs使用nuget包时,发现无法解析的“xxx”的不同版本之间存在冲突
点击右上角即可分享
微信分享提示