winows bat脚本分享:禁止文件夹内exe联网,批量添加防火墙规则!

898 阅读2分钟

人生若只如初见不如不见

代码网上找的,格式化了,原来只有一行:

禁止某软件管家联网,安心地帮我卸载软件吧,别做梦了,还想成为应用市场,门都没有,去你的,禁止你联网我说不让就不让,一键禁止,禁止联网,联网功能关闭,影响非常好,效果十分绿色,运行更加流畅,秒速启动,禁止后台下载,不让下载组件,后台没有,绿色环保 ……

掘金编辑器这代码粘贴到底什么规则触发的?为什么粘贴代码反而不格式化了呢?……

@Echo Off
SetLocal

:begin

echo:
echo ****** 禁止文件夹联网 ******
echo:

set /p folder=请输入文件夹(退出请直接关闭窗口):
If Not Exist "%folder%\" Exit/B
If /I "%CD%" NEq "%folder%" PushD %folder%
Set "Cmnd=netsh advfirewall firewall add rule action=block"
echo:
For /R %%a In (*.exe) Do (For %%b In (in out) Do (      
	echo 创建禁止 %%b 规则【%%a】      
	%Cmnd% name="blocked %%a via script" dir=%%b program="%%a"))
	
echo:
echo 搞定了,%folder% 中e所有 exe 文件的禁止入站、出站规则都已成功创建!
echo ----------------------------
echo:

goto begin

回头一搜索,才发现是知乎上的。。 WIN10防火墙阻止整个文件夹里的exe联网怎么弄? - 知乎

测试了,可用,可以阻止 win32 程序中的 ie 组件等联网,但不能阻止其通过 外部的系统指令,比如curl,进行联网。

mad明明不是代码,从zhihu'粘贴一段评论,就闪……

我是尝试编写程序测试的。ie组件比较绕,问curosr编辑器里的机器人,越来越敷衍,真是机心不古,茶风日下!

后来调整关键词,从codeproject上下载了可编译、可运行demo,除了ie组件,顶部还有按钮啊,地址栏啊。Embedded WebBrowser (IWebBrowser2) in Pure C++ (no MFC, etc) - CodeProject

测试程序,禁止文件夹内exe联网后,就真的ie就像真的不能联网一样,但是还是可以exe还是可以通过curl指令联网,前提计算机上有curl并在path中。

int test_main() { std::string url = "pss.bdstatic.com/static/supe…"; std::string command = "curl " + url;

// 执行curl命令并获取输出
FILE* pipe = _popen(command.c_str(), "r");
if (pipe) {
	char buffer[128];
	std::string result = "";
	while (!feof(pipe)) {
		if (fgets(buffer, 128, pipe) != NULL)
			result += buffer;
	}
	_pclose(pipe);

	// 输出获取的文本内容
	MessageBoxA(hWndMain, result.data(), "", 0);
	//std::cout << result << std::endl;
}

return 0;

}

这样,阻止联网就失效了~

再看看它创建的规则放哪里?算了人生苦短,不看了。

再拓展看看,问茶特匹:

删除禁止联网规则:

允许联网


%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

@Echo Off
SetLocal

:begin

echo:
echo ****** 禁止文件夹联网 ******
echo:

set /p folder=请输入文件夹(退出请直接关闭窗口): 
If Not Exist "%folder%\" Exit/B
If /I "%CD%" NEq "%folder%" PushD %folder%
Set "Cmnd=netsh advfirewall firewall delete rule "
echo:
For /R %%a In (*.exe) Do (For %%b In (in out) Do (
      echo 创建禁止 %%b 规则【%%a】
      %Cmnd% name="blocked %%a via script" dir=%%b program="%%a"))

echo:
echo 搞定了,%folder% 中所有 exe 文件的禁止入站、出站规则都已成功创建!
echo ----------------------------
echo:

goto begin

发现,禁止联网,会重复添加规则。

于是:


%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

@Echo Off
SetLocal

:begin

echo:
echo ****** 禁止文件夹联网 ******
echo:

set /p folder=请输入文件夹(退出请直接关闭窗口): 
If Not Exist "%folder%\" Exit/B
If /I "%CD%" NEq "%folder%" PushD %folder%
Set "Cmnd=netsh advfirewall firewall add rule action=block"
echo:
For /R %%a In (*.exe) Do (For %%b In (in out) Do (
    echo 创建禁止 %%b 规则【%%a】
    netsh advfirewall firewall show rule name="blocked %%a via script" | findstr /i "blocked %%a via script" >nul
    if errorlevel 1 (
        %Cmnd% name="blocked %%a via script" dir=%%b program="%%a"
    ) else (
        echo 规则【%%a】已存在,跳过创建
    )
))

echo:
echo 搞定了,%folder% 中所有 exe 文件的禁止入站、出站规则都已成功创建!
echo ----------------------------
echo:

goto begin

bat 真是最差的编程语言……