本文目录导读:

批处理脚本(推荐)
@echo off
chcp 65001 >nul进程网络屏蔽工具
setlocal enabledelayedexpansion
:: ===== 请在此处配置需要屏蔽的进程名称(不含 .exe 后缀) =====
set "BLOCK_LIST=chrome firefox qq wechat"
:: 创建入站和出站规则
echo [信息] 正在创建防火墙规则屏蔽以下进程:
echo ----------------------------------------
for %%p in (%BLOCK_LIST%) do (
echo - %%p.exe
netsh advfirewall firewall add rule name="BLOCK_%%p_IN" dir=in program="%%p.exe" action=block enable=yes >nul
netsh advfirewall firewall add rule name="BLOCK_%%p_OUT" dir=out program="%%p.exe" action=block enable=yes >nul
)
echo ----------------------------------------
echo [完成] 规则已创建!
:: 列出已有规则
echo.
echo [信息] 当前已有屏蔽规则:
netsh advfirewall firewall show rule name=all | findstr /i "BLOCK_"
pause
PowerShell 脚本(更灵活)
# 配置需要屏蔽的进程列表
$blockList = @(
"chrome.exe",
"firefox.exe",
"qq.exe",
"wechat.exe"
)
# 检查管理员权限
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "错误:需要以管理员身份运行!" -ForegroundColor Red
pause
exit 1
}
Write-Host "正在创建防火墙规则..." -ForegroundColor Green
foreach ($proc in $blockList) {
$procName = $proc -replace '\.exe$', ''
# 创建入站规则
$ruleIn = New-NetFirewallRule -DisplayName "BLOCK_${procName}_IN" `
-Direction Inbound `
-Program "$env:ProgramFiles\$proc" `
-Action Block `
-Enabled True `
-Profile Any
# 创建出站规则
$ruleOut = New-NetFirewallRule -DisplayName "BLOCK_${procName}_OUT" `
-Direction Outbound `
-Program "$env:ProgramFiles\$proc" `
-Action Block `
-Enabled True `
-Profile Any
Write-Host " ✓ 已屏蔽: $proc" -ForegroundColor Yellow
}
Write-Host "`n全部规则创建完成!" -ForegroundColor Green
# 显示当前规则
Write-Host "`n当前屏蔽规则列表:" -ForegroundColor Cyan
Get-NetFirewallRule | Where-Object { $_.DisplayName -like "BLOCK_*" } | Select-Object DisplayName, Direction, Enabled
使用说明
配置进程列表
- 批处理(.bat):修改第7行的
BLOCK_LIST=chrome firefox qq wechat - PowerShell(.ps1):修改第3-8行的数组
$blockList
运行方式
- 右键点击脚本文件
- 选择 "以管理员身份运行"(必须!否则会失败)
- 确认用户账户控制(UAC)提示
恢复网络(如需)
:: 删除所有屏蔽规则 netsh advfirewall firewall delete rule name=all | findstr /i "BLOCK_"
# PowerShell 删除所有屏蔽规则
Get-NetFirewallRule | Where-Object { $_.DisplayName -like "BLOCK_*" } | Remove-NetFirewallRule
原理说明
- 通过 Windows 防火墙创建 入站 和 出站 规则
- 指定到特定可执行文件路径(默认在 Program Files 目录)
- 如果程序在其他路径安装,规则可能失效
注意事项
- 必须管理员权限运行
- 如果程序安装在其他目录(非 Program Files),规则可能无效
- 某些程序可能通过服务(svchost.exe)连接网络,需要额外配置
- 屏蔽的是所有同名进程,建议指定完整路径以提高准确性
增强版:自动检测进程路径
$processes = @("chrome", "firefox")
foreach ($proc in $processes) {
$paths = Get-Process -Name $proc -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Path -Unique
if ($paths) {
foreach ($path in $paths) {
New-NetFirewallRule -DisplayName "BLOCK_$($proc)_$([guid]::NewGuid().ToString('N'))" `
-Direction Outbound -Program $path -Action Block -Enabled True
Write-Host "✓ 已屏蔽: $path"
}
} else {
Write-Host "✗ 未找到进程: $proc" -ForegroundColor Red
}
}
选择适合你的方案,建议先测试一下再应用到生产环境。