我可以使用创建新规则
netsh advfirewall firewall add rule...
并使用
netsh advfirewall firewall delete rule...
但我无法找到改变现有规则的方法。
现在我实现了一个逻辑,我检查规则是否存在,如果规则确实存在,则删除它,然后插入修改后的规则。但在这种方法中,我需要跟踪以前的规则配置。例如,如果我只想禁用规则,那么我无法删除现有规则并编写新规则,而不知道该规则的其他配置是什么。
有没有更好的方法可以做到同样的事情,比如我想使用 bat 文件更改一个字段但保持所有内容不变?谢谢。
答案1
您可以使用netsh advfirewall firewall set rule
“为现有规则的属性设置新值”的命令。例如,要禁用所有名为“Web 服务器”的规则:
netsh advfirewall firewall set rule name="Web Server" new enable=no
请参阅netsh advfirewall firewall set rule /?
以了解更多详细信息。值得注意的是,附加过滤器(例如,profile=private
仅影响私人资料)位于之前new
,而其他要更改的字段位于之后new
。