Csharp/C#教程:使用API​​更新现有防火墙规则分享


使用API​​更新现有防火墙规则

我能够以编程方式将单个规则添加到Windows防火墙(Server 2008 R2),但是我试图避免每个IP地址有多个规则,并且只想更新现有规则RemoteAddresses。 下面是我用来添加规则的代码,我正在尽力研究如何更新现有规则远程地址,但没有运气。

任何帮助表示赞赏!

string ip = "xxxx"; INetFwRule2 firewallRule = (INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule")); firewallRule.Name = "Block Bad IP Addresses"; firewallRule.Description = "Block Nasty Incoming Connections from IP Address."; firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN; firewallRule.Enabled = true; firewallRule.InterfaceTypes = "All"; firewallRule.RemoteAddresses = ip; INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2")); firewallPolicy.Rules.Add(firewallRule); 

以下代码适用于我:

 INetFwPolicy2 firewallPolicy = (INetFwPolicy2) Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2")); var rule = firewallPolicy.Rules.Item("Block Bad IP Addresses"); // Name of your rule here rule.Name = "Block Block Block"; // Update the rule here. Nothing else needed to persist the changes 

除了amdmax的答案(抱歉,我无法添加注释),我发现没有简单的方法调用来检查规则是否存在所以我想出了这个以确保创建规则是否存在:

上述就是C#学习教程:使用API​​更新现有防火墙规则分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

  INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance( Type.GetTypeFromProgID("HNetCfg.FwPolicy2")); INetFwRule firewallRule = firewallPolicy.Rules.OfType().Where(x => x.Name == RULE_NAME).FirstOrDefault(); if (firewallRule == null) { firewallRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule")); firewallRule.Name = RULE_NAME; firewallPolicy.Rules.Add(firewallRule); } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1009822.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐