利用批处理设置Windows防火墙阻止程序访问网络!

博主曾经推荐大家使用CCleaner来自动清理系统垃圾,并且提供了一枚激活码,你懂的。传送门
但是从2018年开始CCleaner开始频繁更新,频繁程度甚至超过了Chrome浏览器,更新虽然让功能更强大,软件更好用,但是也修补了那个激活码的漏洞,激活之后不知不觉就失效了,博主也未能幸免。
不过好在博主我机智过人,想到利用Windows 防火墙来阻止CCleaner访问网络。这样在激活的时候也不需要断网,也不用担心授权失效。
截至此文发布时CCleaner已经更新到v5.58.7209文末提供手动更新传送门,安装后文件夹里有三个执行文件,我们需要对它们的出站入站进行限制。
但博主也是一个懒人( ╯□╰ ),一条条添加实在太麻烦,就想到了Windows批处理。经过调试后在Win10上运行正常,现在分享出来,也可以用于其它软件的联网屏蔽。

@echo off
setlocal ENABLEDELAYEDEXPANSION
MODE CON COLS=60 LINES=11
color 0b
rem 批处理获取管理员权限
:-------------------------------------  
    %1 mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&&exit /b
    CD /D "%~dp0"
:-------------------------------------  

::添加阻止程序出站规则
(
        echo "CCUpdate","%ProgramFiles%\CCleaner\CCUpdate.exe"
        echo "CCleaner64","%ProgramFiles%\CCleaner\CCleaner64.exe"
        echo "CCleaner","%ProgramFiles%\CCleaner\CCUpdate.exe"
)>list.txt
FOR /F "usebackq tokens=1,2 delims=," %%i in (list.txt) do (
        netsh advfirewall firewall add rule name=%%i  dir=out  program=%%j  action=block>nul
        echo 阻止%%i程序出站规则已添加
)
del list.txt

::添加阻止程序入站规则
@echo off 
(
        echo "CCUpdate","%ProgramFiles%\CCleaner\CCUpdate.exe"
        echo "CCleaner64","%ProgramFiles%\CCleaner\CCleaner64.exe"
        echo "CCleaner","%ProgramFiles%\CCleaner\CCleaner.exe"
)>list.txt
set svchost_exe="%%systemroot%%\system32\svchost.exe"
FOR /F "usebackq tokens=1,2 delims=," %%i in (list.txt) do (
        netsh advfirewall firewall add rule name=%%i  dir=in  program=%%j  action=block>nul
        echo 阻止%%i程序入站规则已添加
)
del list.txt
echo 操作结束,按任意键退出...
pause>nul
exit

上面代码里的CCUpdateCCleaner64CCleaner为规则名称,名称后跟的是对应程序的路径,可自行修改。
执行结果如下:
运行截图.jpg

检查是否成功可以在Windows命令窗口中输入(name为规则名,大小写不敏感)

netsh advfirewall firewall show rule name="CCleaner"

或者在Windows 防火墙高级设置里检查是否有如下信息
规则效果.jpg

如果查询不到说明未添加成功,应检查当前用户是否具有管理员权限。
备注:如果规则添加成功,便限制了它们访问网络,所以以后软件的更新需要手动操作。手动更新传送门

Last modification:September 2nd, 2019 at 01:52 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment