通常情况下,我会使用防火墙来阻止应用程序访问互联网。但我不想仅为了一个应用程序而设置我的防火墙系统。
我想要的是:创建一个 bat 文件来启动应用程序。类似于这。
如果我运行该 bat 文件,该应用程序将被阻止访问互联网。如果我直接运行该应用程序,该应用程序可以访问互联网。
可以这样做吗?
答案1
您可以在运行应用程序之前添加防火墙规则来阻止任何传入和传出的流量,并在退出后禁用(或删除)防火墙规则。
设置拦截规则
:: Variables
set RULE_NAME=TemporaryBlock
set PROGRAM=C:\Program Files (x86)\App\app.exe
netsh advfirewall firewall add rule name="%RULE_NAME%" dir=in action=block profile=any program="%PROGRAM%"
netsh advfirewall firewall add rule name="%RULE_NAME%" dir=out action=block profile=any program="%PROGRAM%"
在阻止互联网的情况下运行应用程序
@echo off
:: Variables
set RULE_NAME=TemporaryBlock
set PROGRAM=C:\Program Files (x86)\App\app.exe
:: Block the app
netsh advfirewall firewall set rule name="%RULE_NAME%" dir=in new enable=yes
netsh advfirewall firewall set rule name="%RULE_NAME%" dir=out new enable=yes
:: Running the app
start "" /wait "%PROGRAM%"
:: Disable the firewall rules
netsh advfirewall firewall set rule name="%RULE_NAME%" dir=in new enable=no
netsh advfirewall firewall set rule name="%RULE_NAME%" dir=out new enable=no
细节
- 文档:
netsh advfirewall firewall add rule -?
- 您还可以在每次运行应用程序时创建和删除规则,但我喜欢创建一次规则,然后启用或禁用它
- 你需要管理员权限