利用批处理设置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
上面代码里的 CCUpdate
、CCleaner64
、CCleaner
为规则名称,名称后跟的是对应程序的路径,可自行修改。
执行结果如下:
检查是否成功可以在Windows命令窗口中输入(name为规则名,大小写不敏感)
netsh advfirewall firewall show rule name="CCleaner"
或者在 Windows 防火墙
的 高级设置
里检查是否有如下信息
如果查询不到说明未添加成功,应检查当前用户是否具有管理员权限。
备注:如果规则添加成功,便限制了它们访问网络,所以以后软件的更新需要手动操作。手动更新传送门