如果你想删除重复的Windows防火墙规则,这篇文章适合你。有时,防火墙会在更新后、某些配置后或在Windows计算机上安装程序后重新创建规则。即使在手动删除这些规则之后也会发生这种情况,这是非常烦人的。
Windows防火墙规则对于希望管理对网络的访问的网络管理员来说是必不可少的。有了这些规则,您就可以控制进出我们网络的内容。例如,您可以阻止某些文件进入您的网络。因此,如果规则复制自身或在删除后重新创建,则存在问题。继续阅读,寻找最佳解决方案。
为什么Windows防火墙复制规则?
没有明确的理由说明您的PC有重复的规则。但是,这可能是因为您调整了某些防火墙设置,或者因为您最近安装的某个程序导致防火墙行为异常。
我们不能排除Windows更新后出现错误的可能性,这可能会导致您的电脑出现许多问题。也可能有病毒或恶意软件实例影响您的Windows安全部分。现在让我们看看如何解决这个问题。
如何删除重复的Windows防火墙规则
如果要删除重复的Windows防火墙规则,或者在删除后重新创建这些规则,我们的故障排除专家建议使用以下解决方案:
现在让我们详细看看这些解决方案。
1]执行预备步骤
在您开始删除规则之前,我们的专家建议您执行一些解决方法,以防止防火墙重新创建或复制您的策略。执行以下操作:
- 检查您的防火墙设置。有时,您可能进行了错误的更改,这可能是您复制Windows防火墙规则的原因。确保您的设置已正确配置。
- 您可以临时禁用任何第三方防病毒软件或您最近安装的任何其他软件。如果不是这样,请启用或重新安装该程序。
- 如果问题发生在升级或更新系统后,您可以恢复到以前的版本,并查看防火墙是否已停止自动复制规则。
在此之后,您现在可以探索删除以下规则的方法
2]手动删除规则
要手动删除Windows规则,请执行以下步骤:
- 使用搜索栏搜索Windows安全应用程序,然后单击打开。
- 找到并选择防火墙和网络保护。
- 在窗口底部,单击高级设置。您将看到Use Account Control(使用帐户控制)提示;选择是继续。这将打开一个名为Windows Defender Firewall with Advanced Security的新窗口。
- 在左侧,您可以依次选择两个选项:入站规则和出站规则。
- 接下来,单击一个复制的规则,然后使用Ctrl或Shift按钮选择多个规则。
- 一旦您对您的选择感到满意,右击它们并选择Delete。
- 系统将提示您确认操作;请单击是。
- 最后,重新启动你的电脑,看看规则是否存在。
如果这样做有效,您可以尝试下一步。
相关:如何使用PowerShell管理Windows防火墙规则
3]使用脚本删除规则
您还可以使用脚本删除重复的Windows防火墙规则。首先,您需要将脚本保存在Windows记事本中。
打开记事本并复制粘贴以下来自SuperUser的代码
#这里我们使用`netsh AdvFirewall Firewall show`获取所有防火墙规则。因为它比Get-NetFirewallRule!$OUTPUT=(Netsh AdvFireWall FIREWALL SHOW RULE NAME=ALL VERBOSE|OUT-STRING).Trim()-Split‘r?nS*r?n’$PropertyNAMES=[System.Collections.Generic.List[string]]::new()$objects=@($(FORACH($SECTION in$OUTPUT){$OBJ=@{}FORACH($LINE IN($SECTION-SPLIT‘r?n’)){IF($LINE-MATCH‘^-+$’){CONTINUE}$NAME,$VALUE=$LINE-SPLIT‘:S*’,2$NAME=$NAME-REPLACE“”,“”$obj.$NAME=$VALUEIF($PropertyNAMES-NOT CONTAINS$NAME){$PropertyNames.Add($NAME)}}$OBJ})|%{Foreach($PropertyNAMES中的$PROP){IF($_.KEYS-NOT CONTAINS$PROP){$_.$PROP=$NULL}}[PSCustomObject]$_})$r=$OBJECTS|Group-Object-Property RuleName、Program、Action、Profiles、RemoteIP、RemotePort、LocalIP、LocalPort、Enabled、协议、方向#如果要查看#$r|?{$_.Count->1}|Select-Object-ExpanProperty group|out-GridView$r|?{$_.Count->1}|%{$name=$_|Select-Object-ExpanProperty RuleName-First 1#此处我们必须使用此cmdlet,因为`netsh AdvFirewall Firewall Delete`无法区分同名的规则并将其全部删除!Get-NetFirewallRule-DisplayName$name|Select-Object-Skip 1|Remove-NetFirewallRule}
将文件另存为Firewall.ps1。
下一步是以管理员身份打开Windows PowerShell,然后将Firewall.ps1文件的文件夹路径粘贴为命令提示符。它类似于:cd C:USERS<;用户名>;Documents。
最后,键入脚本标题,即Firewall.ps1,然后按Enter键。
该脚本将开始运行并删除所有重复的Windows防火墙规则。
注:Reddit上还有另一个脚本,你可以看看。
#Firewall.ps1#Get-NetFirewallRule>;X.txt以查看引用的空路径是什么。ForEach(Get-NetFirewallRule|Get-NetFirewallApplicationFilter中的$Rule){if(-not$rule.AppPath){#UWP应用程序没有路径。如果($rule.CreationClassName.Substring(0,22)-ne‘msft|fw|FirewallRule|{’){#粗略检查Windows 10应用程序。写-主机‘删除ID:’$rule.InstanceIDGet-NetFirewallRule$rule.InstanceID|Remove-NetFirewallRule#}Else{#WRITE-主机$rule.CreationClassName#Get-NetFirewallRule$rule.InstanceID|Format-List Platform}}Else{#防火墙规则包含路径。如果(-Not(测试路径$rule.AppPath)-and$rule.AppPath-ne‘System’){#检查Windows 10本身的粗略.Wite-主机‘删除应用程序:’$rule.AppPath Get-NetFirewallRule$rule.InstanceID|Remove-NetFirewallRule}
删除某些规则可能会影响您的网络和相关配置。请谨慎执行这些步骤。一些规则可能看起来是一样的,但有一点不同。如果你知道自己在做什么,就把它们拿出来。
希望你能在这里找到有价值的东西。
已阅读:Windows防火墙正在阻止或阻止您的连接
如何在Windows中编写防火墙规则?
要在Windows中编写或创建防火墙规则,请在Windows安全应用程序中打开具有高级安全性的Windows防火墙选项,然后选择入站规则或出站规则。单击操作,然后选择新建规则。在规则类型部分,选择自定义,然后选择下一步。按照屏幕上的说明以您想要的方式自定义规则。
阅读:Windows防火墙控制配置和管理Windows防火墙设置
如何禁用Windows防火墙规则
要禁用Windows防火墙规则,请转到Windows安全应用程序并选择防火墙网络保护。在底部,单击高级设置以打开具有高级安全性的Windows Defender防火墙。在此处,选择“规则”或“规则”。你会看到一长串的规则。搜索要禁用的规则,单击它,然后在左侧窗格中选择禁用规则。在某些情况下,禁用规则可能比删除规则更好。
Read: Windows Firewall is preventing or blocking your connections