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

问题描述 投票:9回答:3

我能够在语法上向Windows防火墙(Server 2008 R2)添加单个规则,但是我试图避免每个IP地址使用多个规则,并且只想更新现有规则RemoteAddresses。下面是我用来添加规则的代码,我正在尽最大努力研究如何更新现有规则“远程地址”,但是没有运气。

感谢您的任何帮助!

string ip = "x.x.x.x";

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);
c# api windows-firewall
3个回答
10
投票

下面的代码对我有用:


5
投票

除了amdmax的答案(对不起,我无法添加评论),我发现没有简单的方法调用来检查规则是否存在,因此我想出了这一点来确保创建规则是否存在是否:


0
投票

我发现此软件包可通过nuget WindowsFirewallHelper获得

© www.soinside.com 2019 - 2024. All rights reserved.