windows上有时候需要临时禁止某个程序访问网络,我们可以借助系统的防火墙实现,下面记录一下命令行里面怎么去使用,这样方便代码里去调用。
1.添加禁止联网的规则
netsh advfirewall firewall add rule name="mytest_app" program="C:\myapp.exe" dir=out action=block
这里面netsh advfirewall firewall 表示是对防火墙规则操作;
add rule表示添加规则;
name表示规则的名字,规则名字可以重复但是尽量不要重复,因为后续修改和删除规则都依赖于规则名字;
program表示程序的绝对路径;
dir表示控制的方向,其中out表示出站(向外发送),in则表示入站(自己接收);
action表示规则的动作,其中block表示禁止,allow表示允许,bypass表示绕过防火墙;(allow仍然需要经过防火墙,受到防火墙的其他安全检查,bypass表示完全绕过防火墙)
2.修改联网规则为允许
netsh advfirewall firewall set rule name="mytest_app" new action=allow
将所有名字为mytest_app的规则,都修改为允许。
3.删除联网规则
netsh advfirewall firewall delete rule name="mytest_app"
删除所有的名字为mytest_app的规则。如果上面设置了block,那么直接删除规则,也可以清理掉block的效果。
更多详细规则设置和帮助
如果想了解更多的规则,比如指定端口,指定地址,指定协议,将规则应用于服务等等,可以自行到命令行查看,命令行给出了示例以及说明。具体查看命令如下:
//查看添加规则的帮助
netsh advfirewall firewall add rule ?
//查看删除规则的帮助
netsh advfirewall firewall delete rule ?
//查看修改规则的帮助
netsh advfirewall firewall set rule ?
//查看指定规则的防火墙设置
netsh advfirewall firewall show rule name="mytest_app"
netsh advfirewall firewall show rule ?
//
另外还有个netsh advfirewall firewall dump,没搞明白怎么用,没看到效果。