# 系统防火墙规则管理 MBFireWall 完整说明文档
# 概述与简介
# 什么是 MBfirewall?
MBfirewall(MB 防火墙管理工具)是一款专为 Windows 操作系统设计的企业级防火墙规则管理解决方案。它通过图形化界面(GUI)和命令行接口(CLI)两种模式,为用户提供了便捷、高效、安全的 Windows Defender 防火墙规则管理能力。
# 产品定位
MBfirewall 定位于:
- 企业级防火墙管理工具:为 IT 管理员提供批量管理防火墙规则的能力
- 软件开发集成组件:为软件开发者提供程序化的防火墙规则配置接口
- 个人用户安全助手:为普通用户简化 Windows 防火墙的复杂配置过程
- 自动化部署工具:支持脚本化部署和批量配置,适合 CI/CD 流程
# 设计理念
MBfirewall 的设计遵循以下核心理念:
- 简单易用:无论是 GUI 还是 CLI,都力求操作简单直观
- 功能强大:覆盖防火墙管理的所有常见场景
- 稳定可靠:基于 Windows COM 接口,确保与系统完美兼容
- 可扩展性:提供完整的 API 接口,支持第三方集成
- 安全优先:所有操作都需要管理员权限,确保系统安全
# 支持的 Windows 版本
MBfirewall 全面支持以下 Windows 版本:
- Windows 7(SP1 及以上)
- Windows 8 / 8.1
- Windows 10(所有版本)
- Windows 11(所有版本)
- Windows Server 2008 R2 及以上
特别说明:针对 Windows 7 的兼容性,MBfirewall 提供了专门的编译版本,确保在 Windows 7 系统上的完美运行。
# 技术栈
- 开发语言:Go 1.21+(Go 1.21 以确保 Windows 7 兼容性)
- GUI 框架:lxn/walk(原生 Windows GUI 库)
- 系统接口:Windows COM API(INetFwPolicy2, INetFwRules)
- 编译方式:原生编译,无需运行时依赖
# 核心特性与亮点
# 双模式运行架构
MBfirewall 的最大特色是同时支持两种运行模式,满足不同用户的需求:
# GUI 模式(图形化界面)
特点:
- 直观的窗口界面,无需记忆命令
- 实时显示防火墙状态和规则列表
- 支持可视化操作,适合个人用户和初级管理员
- 系统托盘支持,最小化到后台运行
- 自动刷新状态,实时反映防火墙变化
适用场景:
- 个人用户日常使用
- IT 管理员快速查看和修改规则
- 需要可视化操作的场景
# CLI 模式(命令行接口)
特点:
- 完整的命令行支持,支持脚本和自动化
- 静默模式(
--silent),仅返回退出码,适合批处理脚本 - JSON 格式输出,便于程序解析
- 批量操作支持,一次命令处理多个规则
- 丰富的过滤和查询选项
适用场景:
- 自动化部署脚本
- CI/CD 流程集成
- 批量配置多个系统
- 远程管理场景
# 完整的防火墙管理能力
MBfirewall 提供了 Windows Defender 防火墙的完整管理能力:
# 配置文件管理
- 支持三种网络配置文件:域网络、专用网络、公用网络
- 可以单独或统一管理各配置文件的状态
- 实时查询配置文件启用状态
# 规则管理
- 添加规则:支持程序路径、端口、协议、方向等完整参数
- 删除规则:支持按程序路径或规则名称删除
- 查询规则:支持列出所有规则,支持前缀过滤
- 规则验证:添加前验证规则有效性,避免无效规则
- 批量操作:支持从 JSON 配置文件批量添加规则
# 状态监控
- 实时查询防火墙整体状态
- 检查特定程序的规则是否存在及状态
- 获取规则详细信息
# 导入导出
- 导出规则到 JSON 文件,便于备份和迁移
- 导入 JSON 配置文件,快速恢复或部署规则
# 候鸟浏览器深度集成
MBfirewall 为候鸟浏览器(MBbrowser)提供了专门的集成功能:
# 自动识别安装路径
- 自动从注册表读取候鸟浏览器安装路径
- 无需手动输入路径,一键配置所有规则
# 智能规则配置
- 自动识别候鸟浏览器的 9 个核心程序文件
- 为每个程序自动添加入站和出站规则
- 针对不同程序配置不同的协议和端口要求
支持的程序列表:
- mbbrowser.exe:候鸟浏览器主程序(双向,所有协议)
- cdp.exe:Chrome DevTools Protocol(TCP,9222 端口)
- mbservice.exe:候鸟浏览器后台服务(双向,所有协议)
- apiserver.exe:API 服务器(TCP,80/443 端口)
- chrome.exe:Chrome 浏览器内核(TCP,80/443 端口)
- chrome_proxy.exe:Chrome 代理程序(TCP,80/443 端口)
- chrome_pwa_launcher.exe:Chrome PWA 启动器(TCP,80/443 端口)
- chromedriver.exe:浏览器自动化驱动(TCP,9515 端口)
- notification_helper.exe:通知助手(TCP,80/443 端口)
一条命令完成配置:
mbfirewall.exe add-mbbrowser
这个命令会自动:
- 从注册表读取候鸟浏览器安装路径
- 检查所有程序文件是否存在
- 为每个存在的程序添加入站和出站规则(共 18 条规则)
- 显示详细的执行结果和错误信息
# 灵活的参数配置
MBfirewall 支持丰富的参数配置选项,满足各种复杂场景:
# 规则方向
- inbound / in:入站规则(外部访问内部)
- outbound / out:出站规则(内部访问外部)
- both:双向规则(默认)
# 协议类型
- tcp:TCP 协议
- udp:UDP 协议
- icmp:ICMP 协议
- any / all:任意协议(默认)
# 端口配置
- 单个端口:80
- 多个端口:80,443,8080
- 端口范围:8000-9000
- 所有端口:*(默认)
# 配置文件类型
- domain:域网络配置文件
- private:专用网络配置文件
- public:公用网络配置文件
- all:所有配置文件(默认)
# 企业级特性
# 批量操作
- 支持从 JSON 配置文件批量添加规则
- 支持批量删除规则
- 批量操作结果详细反馈
# 导出导入
- 导出规则到 JSON 文件,支持前缀过滤
- 导入 JSON 配置文件,快速部署规则
- 配置文件格式标准化,易于版本控制
# 日志与审计
- 可选的日志记录功能(通过
--enable-log启用) - 日志文件按日期分割,便于管理
- 详细的错误信息和调试信息
# 错误处理
- 标准的退出代码(0-4),便于脚本判断
- 详细的错误信息,便于问题诊断
- 静默模式支持,适合自动化场景
# 安全与权限管理
# 管理员权限要求
- 所有修改操作都需要管理员权限
- 自动检测权限,友好提示用户
- 支持 UAC 提权
# 操作验证
- 添加规则前验证路径有效性
- 检查规则是否已存在,避免重复
- 验证参数合法性,防止无效配置
# 最小权限原则
- 查询操作可以在普通用户下运行(有限功能)
- 仅修改操作需要管理员权限
- 帮助和版本信息无需权限
# 使用场景
# 场景 1:软件开发集成
需求背景:软件开发公司需要在安装程序中自动配置防火墙规则,确保软件能够正常访问网络。手动配置对用户来说太复杂,且容易出错。
解决方案:在安装程序中集成 MBfirewall CLI,在安装完成时自动添加防火墙规则。
示例代码(C++ 伪代码):
void OnInstallComplete() {
// 调用 MBfirewall 添加规则
system("mbfirewall.exe add --app \"C:\\Program Files\\MyApp\\app.exe\" --name \"MyApp\" --silent");
// 或使用批量配置文件
system("mbfirewall.exe import --input \"install_dir\\config\\firewall_rules.json\"");
}
优势:
- 用户无需手动配置防火墙
- 减少技术支持成本
- 确保软件正常网络访问
- 支持批量规则配置
# 场景 2:企业 IT 批量部署
需求背景:企业 IT 部门需要为几百台计算机统一配置防火墙规则,手动配置工作量巨大,且容易遗漏。
解决方案:使用 MBfirewall CLI 配合配置文件,通过组策略或远程脚本批量部署。
部署步骤:
- 准备配置文件(apps.json):
{
"version": "1.0",
"description": "企业应用防火墙规则",
"apps": [
{
"name": "ERP 系统客户端",
"path": "C:\\Program Files\\ERP\\client.exe",
"direction": "both",
"protocol": "tcp",
"ports": "8080",
"enabled": true
},
{
"name": "数据库客户端",
"path": "C:\\Program Files\\DB\\client.exe",
"direction": "outbound",
"protocol": "tcp",
"ports": "1433",
"enabled": true
}
]
}
- 创建部署脚本(deploy.bat):
@echo off
echo 正在部署防火墙规则 ...
mbfirewall.exe import --input "%~dp0apps.json"
if %ERRORLEVEL% EQU 0 (
echo 防火墙规则部署成功
) else (
echo 部署失败,请检查日志
exit /b 1
)
- 通过组策略或远程执行脚本批量部署
优势:
- 一次性部署多台计算机
- 配置统一,避免遗漏
- 支持版本控制和回滚
- 可自动化执行
# 场景 3:个人用户简化配置
需求背景:个人用户在安装软件后,Windows 防火墙会弹出提示,用户经常不知道如何处理,或者需要手动配置复杂规则。
解决方案:使用 MBfirewall GUI 模式,直观地查看和管理防火墙规则。
使用流程:
- 运行 mbfirewall.exe 启动图形界面
- 查看当前防火墙状态
- 添加新程序规则:
- 点击 "添加规则"
- 选择程序路径
- 设置规则名称和参数
- 确认添加
- 查看规则列表,确认规则已添加
优势:
- 图形界面,操作直观
- 实时显示状态变化
- 无需了解命令行
- 错误提示友好
# 场景 4:CI/CD 自动化流程
需求背景:在 CI/CD 流程中,需要在测试环境中自动配置防火墙规则,确保测试能够正常进行。
解决方案:在 CI/CD 脚本中使用 MBfirewall CLI,自动配置测试环境。
CI/CD 脚本示例(GitLab CI):
test_stage:
script:
# 配置防火墙规则
- mbfirewall.exe add --app "C:\App\test.exe" --name "测试应用" --silent
# 验证规则已添加
- mbfirewall.exe check --app "C:\App\test.exe" --silent
# 执行测试
- run_tests.bat
after_script:
# 清理规则
- mbfirewall.exe remove --app "C:\App\test.exe" --silent
优势:
- 集成到自动化流程
- 支持静默模式,不影响日志输出
- 可通过退出码判断结果
- 测试后自动清理
# 场景 5:候鸟浏览器用户
需求背景:候鸟浏览器用户在安装后需要配置多个防火墙规则,手动配置繁琐且容易出错。
解决方案:使用 MBfirewall 专门的候鸟浏览器集成功能,一条命令完成所有配置。
使用步骤:
- 确保候鸟浏览器已安装(注册表中有路径记录)
- 以管理员身份运行命令:
mbfirewall.exe add-mbbrowser
- 等待自动配置完成(约 18 条规则)
优势:
- 一条命令完成所有配置
- 自动识别安装路径
- 智能跳过不存在的文件
- 详细的执行反馈
# 场景 6:安全审计与合规
需求背景:企业需要定期审计防火墙规则,确保符合安全策略,并生成审计报告。
解决方案:使用 MBfirewall 导出功能,定期导出规则配置,进行审计分析。
审计流程:
- 定期导出规则(每日/每周):
@echo off
set BACKUP_DIR=backup\%date:~0,4%%date:~5,2%%date:~8,2%
mkdir "%BACKUP_DIR%"
mbfirewall.exe export --output "%BACKUP_DIR%\firewall_rules.json"
分析规则配置:
- 检查是否有未授权的规则
- 验证规则配置是否符合安全策略
- 识别异常的端口和协议配置
生成审计报告:
- 对比不同时间点的规则变化
- 记录规则变更历史
- 生成合规报告
优势:
- 可追溯的配置历史
- 便于合规审查
- 及时发现异常配置
- 支持自动化审计
# 场景 7:故障排查
需求背景:用户在遇到网络连接问题时,需要检查防火墙规则是否正确配置。
解决方案:使用 MBfirewall 查询功能,快速检查规则状态。
排查步骤:
- 检查防火墙整体状态:
mbfirewall.exe status
- 检查特定程序规则:
mbfirewall.exe check --app "C:\Program Files\App\app.exe"
- 列出所有相关规则:
mbfirewall.exe list --prefix "App"
- 根据检查结果修复问题:
- 如果规则不存在,添加规则
- 如果规则被禁用,启用规则
- 如果规则配置错误,删除后重新添加
优势:
- 快速定位问题
- 清晰的规则状态显示
- 支持批量检查
- 便于远程协助
# 详细功能说明
# 防火墙状态查询(status)
功能描述:查询 Windows 防火墙的整体状态,包括各个配置文件的启用状态和规则总数。
使用方法:
GUI 模式:
- 启动程序后,主界面会显示当前防火墙状态
- 状态栏实时显示各个配置文件的状态
- 点击 "刷新" 按钮更新状态
CLI 模式:
# 基本查询
mbfirewall.exe status
# 静默模式(仅返回退出码)
mbfirewall.exe status --silent
输出示例:
{
"domain_profile": {
"profile_type": "domain",
"enabled": true,
"last_updated": "2025-11-03T10:30:00Z"
},
"private_profile": {
"profile_type": "private",
"enabled": true,
"last_updated": "2025-11-03T10:30:00Z"
},
"public_profile": {
"profile_type": "public",
"enabled": false,
"last_updated": "2025-11-03T10:30:00Z"
},
"profiles": [
{
"type": "domain",
"enabled": true,
"last_updated": "2025-11-03T10:30:00Z"
},
{
"type": "private",
"enabled": true,
"last_updated": "2025-11-03T10:30:00Z"
},
{
"type": "public",
"enabled": false,
"last_updated": "2025-11-03T10:30:00Z"
}
],
"rule_count": 150,
"is_admin": true,
"last_checked": "2025-11-03T10:30:00Z",
"timestamp": "2025-11-03T10:30:00Z"
}
退出代码:
- 0:查询成功
- 2:权限不足(需要管理员权限)
- 1:查询失败
使用场景:
- 检查防火墙是否启用
- 监控防火墙状态变化
- 在自动化脚本中判断防火墙状态
- 故障排查时了解全局状态
注意事项:
- 此命令需要管理员权限才能获取完整信息
- 普通用户只能查询,不能修改状态
- 状态信息会实时更新
# 规则检查(check)
功能描述:检查指定程序的防火墙规则是否存在,以及规则的状态(启用 / 禁用)。
使用方法:
# 检查程序规则状态
mbfirewall.exe check --app "C:\Program Files\MyApp\app.exe"
# 静默模式检查
mbfirewall.exe check --app "C:\Program Files\MyApp\app.exe" --silent
参数说明:
--app <路径>:程序可执行文件的完整路径(必需)
输出示例:
{
"app": "C:\\Program Files\\MyApp\\app.exe",
"inbound": "enabled",
"outbound": "enabled",
"rules": [
{
"name": "候鸟浏览器 - app.exe (入站)",
"direction": "inbound",
"enabled": true,
"protocol": "any",
"ports": "*"
},
{
"name": "候鸟浏览器 - app.exe (出站)",
"direction": "outbound",
"enabled": true,
"protocol": "any",
"ports": "*"
}
]
}
状态值说明:
- enabled:规则存在且已启用
- disabled:规则存在但已禁用
- not_found:规则不存在
退出代码:
- 0:规则已添加且启用
- 1:规则不存在
- 2:规则存在但未启用
- 4:程序路径无效
使用场景:
- 安装程序后验证规则是否正确添加
- 故障排查时检查规则状态
- 自动化脚本中验证配置
- 定期检查规则完整性
注意事项:
- 路径必须使用完整路径,不能使用相对路径
- 路径区分大小写(在某些情况下)
- 如果程序有多个规则,会列出所有相关规则
# 添加规则(add)
功能描述:为指定程序添加防火墙规则,支持丰富的参数配置。
使用方法:
添加单个程序规则
# 基本添加(双向,所有协议,所有端口)
mbfirewall.exe add --app "C:\Program Files\MyApp\app.exe"
# 添加带自定义名称的规则
mbfirewall.exe add --app "C:\Program Files\MyApp\app.exe" --name "我的应用程序"
# 添加入站 TCP 规则,指定端口
mbfirewall.exe add --app "C:\Server\server.exe" --direction inbound --protocol tcp --ports 80,443
# 添加出站 UDP 规则
mbfirewall.exe add --app "C:\Client\client.exe" --direction outbound --protocol udp --ports 53
# 添加特定端口范围的规则
mbfirewall.exe add --app "C:\Game\game.exe" --protocol tcp --ports 27015-27030
# 静默模式添加
mbfirewall.exe add --app "C:\App\app.exe" --name "App" --silent
参数说明:
| 参数 | 说明 | 可选值 | 默认值 |
|---|---|---|---|
--app <路径> | 程序可执行文件路径(必需) | - | - |
--name <名称> | 规则名称(可选) | 任意字符串 | 使用文件名 |
--direction <方向> | 规则方向 | inbound / in / outbound / out / both | both |
--protocol <协议> | 协议类型 | tcp / udp / icmp / any | any |
--ports <端口> | 端口号 | 80 / 80,443 / 8000-9000 / * | * |
--silent | 静默模式 | - | false |
规则命名规则:如果未指定 --name 参数,规则名称格式为:
{规则前缀} - {文件名} ({方向})
例如:候鸟浏览器 - app.exe (入站)
批量添加规则: 使用 JSON 配置文件批量添加规则:
mbfirewall.exe add --batch "config\apps.json"
配置文件格式:
{
"name": "我的应用规则集",
"description": "批量添加的防火墙规则",
"version": "1.0",
"apps": [
{
"name": "Chrome 浏览器",
"path": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"direction": "both",
"protocol": "any",
"ports": "*",
"enabled": true,
"description": "Chrome 浏览器防火墙规则"
},
{
"name": "Web 服务器",
"path": "C:\\Server\\nginx.exe",
"direction": "inbound",
"protocol": "tcp",
"ports": "80,443",
"enabled": true,
"description": "Nginx Web 服务器"
}
]
}
退出代码:
- 0:添加成功
- 1:添加失败(详细错误见输出)
- 2:权限不足
- 3:参数无效
- 4:规则已存在
使用场景:
- 安装程序时自动添加规则
- 配置服务器应用程序的网络访问
- 批量部署多个程序的规则
- 临时添加测试规则
注意事项:
- 需要管理员权限
- 如果规则已存在,会返回错误(不会覆盖)
- 添加双向规则时,会创建两条规则(入站 + 出站)
- 路径必须是完整路径
- 文件不存在时可以添加规则(取决于设置)
# 删除规则(remove)
功能描述:删除指定程序的防火墙规则,支持按程序路径或规则名称删除。
使用方法:
按程序路径删除
# 删除程序的所有规则(入站 + 出站)
mbfirewall.exe remove --app "C:\Program Files\MyApp\app.exe"
# 静默模式删除
mbfirewall.exe remove --app "C:\Program Files\MyApp\app.exe" --silent
按规则名称删除
# 删除特定规则
mbfirewall.exe remove --name "候鸟浏览器 - app.exe (入站)"
# 删除特定规则(静默模式)
mbfirewall.exe remove --name "候鸟浏览器 - app.exe (入站)" --silent
参数说明:
--app <路径>:程序可执行文件路径(与--name二选一)--name <名称>:规则名称(与--app二选一)--silent:静默模式
退出代码:
- 0:删除成功
- 1:删除失败
- 2:权限不足
- 3:参数无效(两个参数都未提供或都提供了)
- 4:规则不存在
使用场景:
- 卸载程序时清理规则
- 修改规则配置(先删除旧规则,再添加新规则)
- 清理无效规则
- 批量清理规则
注意事项:
- 需要管理员权限
- 按路径删除会删除该程序的所有规则(入站 + 出站)
- 删除操作不可恢复,请谨慎操作
- 如果规则不存在,会返回错误(不会报错,但退出码不为 0)
# 列出规则(list)
功能描述:列出所有或特定前缀的防火墙规则。
使用方法:
# 列出所有规则
mbfirewall.exe list
# 列出特定前缀的规则
mbfirewall.exe list --prefix "候鸟浏览器"
# 列出 MBbrowser 相关规则
mbfirewall.exe list --prefix "MBbrowser"
# 静默模式
mbfirewall.exe list --prefix "候鸟浏览器" --silent
参数说明:
--prefix <前缀>:按规则名称前缀过滤(可选)--silent:静默模式
输出示例:
{
"count": 10,
"rules": [
{
"name": "候鸟浏览器 - Chrome (入站)",
"display_name": "候鸟浏览器 - Chrome (入站)",
"description": "Chrome 浏览器内核 - 网页显示和执行",
"enabled": true,
"direction": "inbound",
"protocol": "tcp",
"local_ports": "80, 443",
"remote_ports": "*",
"application_path": "C:\\Program Files\\MBbrowser\\MBbrowser\\chrome.exe",
"profiles": 7
},
{
"name": "候鸟浏览器 - Chrome (出站)",
"display_name": "候鸟浏览器 - Chrome (出站)",
"description": "Chrome 浏览器内核 - 网页显示和执行",
"enabled": true,
"direction": "outbound",
"protocol": "tcp",
"local_ports": "80,443",
"remote_ports": "*",
"application_path": "C:\\Program Files\\MBbrowser\\MBbrowser\\chrome.exe",
"profiles": 7
}
]
}
退出代码:
- 0:查询成功
- 1:查询失败
- 2:权限不足
使用场景:
- 查看所有防火墙规则
- 检查特定应用程序的规则
- 审计和合规检查
- 故障排查
注意事项:
- 需要管理员权限
- 规则列表可能很长(数百条),建议使用前缀过滤
- 输出可能包含系统和其他程序创建的规则
# 启用防火墙(enable)
功能描述:启用指定配置文件的 Windows 防火墙。
使用方法:
# 启用所有配置文件
mbfirewall.exe enable --profile all
# 仅启用公用网络防火墙
mbfirewall.exe enable --profile public
# 启用专用网络防火墙
mbfirewall.exe enable --profile private
# 启用域网络防火墙
mbfirewall.exe enable --profile domain
# 静默模式
mbfirewall.exe enable --profile all --silent
参数说明:
--profile <类型>:配置文件类型(必需)- domain:域网络配置文件
- private:专用网络配置文件
- public:公用网络配置文件
- all:所有配置文件
--silent:静默模式
退出代码:
- 0:启用成功
- 1:启用失败
- 2:权限不足
使用场景:
- 修复被禁用的防火墙
- 启用特定网络的防火墙
- 批量部署时确保防火墙启用
- 安全策略要求防火墙必须启用
注意事项:
- 需要管理员权限
- 启用防火墙不会影响已有规则
- 建议保持防火墙启用状态以确保安全
# 禁用防火墙(disable)
功能描述:禁用指定配置文件的 Windows 防火墙。
使用方法:
# 禁用所有配置文件(不推荐)
mbfirewall.exe disable --profile all
# 仅禁用公用网络防火墙
mbfirewall.exe disable --profile public
参数说明:
--profile <类型>:配置文件类型(必需)--silent:静默模式
退出代码:
- 0:禁用成功
- 1:禁用失败
- 2:权限不足
安全警告:禁用防火墙会显著降低系统安全性,使系统容易受到网络攻击。除非有特殊需求,否则不建议禁用防火墙。
使用场景:
- 临时故障排查(排查是否是防火墙导致的问题)
- 特定的测试环境需求
- 内网环境中,有其他防火墙设备保护
注意事项:
- 需要管理员权限
- 禁用防火墙会立即生效,所有防火墙规则将不再生效
- 建议尽快重新启用防火墙
# 导出规则(export)
功能描述:导出防火墙规则配置到 JSON 文件,支持前缀过滤。
使用方法:
# 导出所有规则
mbfirewall.exe export --output "backup\all_rules.json"
# 导出特定前缀的规则
mbfirewall.exe export --output "backup\mbbrowser_rules.json" --prefix "候鸟浏览器"
# 导出到当前目录
mbfirewall.exe export --output "firewall_backup.json"
# 静默模式
mbfirewall.exe export --output "backup.json" --silent
参数说明:
--output <文件>:输出文件路径(必需)--prefix <前缀>:仅导出特定前缀的规则(可选)--silent:静默模式
输出文件格式:
{
"version": "1.0",
"description": "导出的防火墙规则",
"created_at": "2025-11-03T10:30:00Z",
"apps": [
{
"name": "候鸟浏览器 - Chrome",
"path": "C:\\Program Files\\MBbrowser\\MBbrowser\\chrome.exe",
"direction": "both",
"protocol": "tcp",
"ports": "80,443",
"enabled": true,
"description": "Chrome 浏览器内核 - 网页显示和执行"
}
]
}
退出代码:
- 0:导出成功
- 1:导出失败
- 2:权限不足
- 3:参数无效(输出路径无效)
使用场景:
- 定期备份防火墙规则
- 迁移规则到其他计算机
- 版本控制和配置管理
- 审计和合规检查
注意事项:
- 需要管理员权限
- 导出文件会覆盖已存在的文件
- 导出格式与批量添加使用的格式相同,可以直接用于导入
# 导入规则(import)
功能描述:从 JSON 配置文件批量导入防火墙规则。
使用方法:
# 从备份文件导入
mbfirewall.exe import --input "backup\all_rules.json"
# 从配置文件导入
mbfirewall.exe import --input "config\default_rules.json"
# 静默模式
mbfirewall.exe import --input "backup.json" --silent
参数说明:
--input <文件>:输入文件路径(必需)--silent:静默模式
配置文件格式:与批量添加使用的格式相同(见 “添加规则” 章节)。
退出代码:
- 0:导入成功
- 1:导入失败(部分或全部规则导入失败)
- 2:权限不足
- 3:参数无效(文件不存在或格式错误)
- 4:文件未找到
使用场景:
- 从备份恢复规则
- 批量部署规则到多台计算机
- 迁移规则到新系统
- 从配置模板快速配置
注意事项:
- 需要管理员权限
- 如果规则已存在,会跳过(不会覆盖)
- 导入失败的规则会记录在输出中
- 建议先导出当前规则作为备份
# 候鸟浏览器专用命令(add-mbbrowser)
功能描述:自动为候鸟浏览器的所有程序添加防火墙规则。
使用方法:
# 添加候鸟浏览器规则(标准模式)
mbfirewall.exe add-mbbrowser
# 启用日志并添加规则
mbfirewall.exe --enable-log add-mbbrowser
工作原理:
读取安装路径:从注册表
HKEY_CURRENT_USER\SOFTWARE\MBbrowser\Path读取候鸟浏览器安装路径检查程序文件:检查以下 9 个程序文件是否存在:
- mbbrowser.exe(主程序)
- cdp.exe(CDP 调试)
- mbservice.exe(后台服务)
- apiserver.exe(API 服务器)
- MBbrowser\chrome.exe(Chrome 内核)
- MBbrowser\chrome_proxy.exe(Chrome 代理)
- MBbrowser\chrome_pwa_launcher.exe(PWA 启动器)
- MBbrowser\chromedriver.exe(浏览器驱动)
- MBbrowser\notification_helper.exe(通知助手)
添加规则:为每个存在的程序添加入站和出站规则(共最多 18 条规则)
显示结果:显示详细的执行结果,包括成功和失败的规则
输出示例:
🔥 候鸟浏览器防火墙规则添加
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📍 安装路径: C:\Program Files\MBbrowser
将为以下候鸟浏览器程序添加防火墙规则:
• mbbrowser.exe (候鸟浏览器主程序)
• cdp.exe (Chrome DevTools Protocol)
• mbservice.exe (候鸟浏览器后台服务)
• apiserver.exe (API服务器)
• chrome.exe (Chrome浏览器内核)
• chrome_proxy.exe (Chrome代理程序)
• chrome_pwa_launcher.exe (PWA启动器)
• chromedriver.exe (浏览器驱动)
• notification_helper.exe (通知助手)
每个程序将添加 入站 和 出站 两条规则
共计 18 条防火墙规则
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 处理程序: mbbrowser.exe
路径: C:\Program Files\MBbrowser\mbbrowser.exe
说明: 候鸟浏览器主程序 - 需要访问互联网
协议: any | 端口: *
[1/2] 添加入站规则... ✅ 成功
[2/2] 添加出站规则... ✅ 成功
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 执行结果
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 成功添加全部 18 条规则
已为以下程序添加防火墙规则:
• mbbrowser.exe
• cdp.exe
• mbservice.exe
• apiserver.exe
• chrome.exe
• chrome_proxy.exe
• chrome_pwa_launcher.exe
• chromedriver.exe
• notification_helper.exe
每个程序都添加了入站和出站规则
退出代码:
- 0:全部规则添加成功
- 1:部分或全部规则添加失败
使用场景:
- 候鸟浏览器安装后自动配置防火墙
- 修复候鸟浏览器网络连接问题
- 重新配置候鸟浏览器防火墙规则
注意事项:
- 需要管理员权限
- 需要确保候鸟浏览器已正确安装
- 如果某些文件不存在,会跳过并继续处理其他文件
- 如果规则已存在,会跳过(不会覆盖)
故障排查: 如果命令失败,请检查:
- 注册表路径:确保
HKEY_CURRENT_USER\SOFTWARE\MBbrowser\Path存在且有正确的路径值 - 文件路径:检查候鸟浏览器安装目录中是否有相应的程序文件
- 管理员权限:确保以管理员身份运行命令
- 防火墙服务:确保 Windows 防火墙服务正在运行
以下继续严格依据原文档内容,按 ###(h3)和 ####(h4)层级规范转换后续章节,不添加任何额外解释、emoji、符号或主观润色,保持内容与原文完全一致。
# 技术特点与架构
# 架构设计
MBfirewall 采用分层架构设计,确保代码的可维护性和可扩展性:
┌─────────────────────────────────────────┐
│ 用户接口层 (UI/CLI) │
│ - GUI 界面 (ui/) │
│ - CLI 命令 (cmd/) │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 业务逻辑层 (firewall/) │
│ - Manager (高级 API) │
│ - 规则验证和构建 │
│ - 批量操作 │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 系统接口层 (firewall/) │
│ - COMFirewall (COM 接口封装) │
│ - Windows COM API 调用 │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 系统层 │
│ - Windows Defender 防火墙 │
│ - INetFwPolicy2 / INetFwRules │
└─────────────────────────────────────────┘
# 核心技术
# Windows COM 接口
MBfirewall 使用 Windows COM(Component Object Model)接口与 Windows 防火墙交互:
主要接口:
- INetFwPolicy2:防火墙策略接口
- 获取和设置配置文件状态
- 获取规则集合
- INetFwRules:防火墙规则集合接口
- 枚举所有规则
- 添加、删除、修改规则
- INetFwRule:防火墙规则接口
- 规则的所有属性(名称、路径、方向、协议等)
优势:
- 官方 API,稳定可靠
- 支持 Windows 7 及以上所有版本
- 无需第三方依赖
- 性能优秀
# Go 语言特性
并发安全:
- 使用 Go 的并发模型确保线程安全
- COM 接口调用在单个线程中执行,避免竞争条件
内存管理:
- Go 的自动垃圾回收,无需手动管理内存
- COM 对象的正确释放确保资源不泄漏
错误处理:
- 详细的错误信息便于问题诊断
- 标准化的错误处理流程
# 模块化设计
MBfirewall 采用模块化设计,各模块职责清晰:
cmd 模块:
- CLI 命令解析和路由
- 命令行参数验证
- 输出格式化
firewall 模块:
- 防火墙操作核心逻辑
- COM 接口封装
- 规则管理
models 模块:
- 数据模型定义
- 类型转换和验证
- 配置文件解析
ui 模块:
- GUI 界面实现
- 事件处理
- 状态更新
utils 模块:
- 工具函数(路径、权限、日志等)
- 通用功能
# 性能优化
# COM 对象复用
- 重用防火墙策略对象,避免频繁创建
- 批量操作时复用连接
# 延迟加载
- 仅在需要时初始化 COM 对象
- 按需查询规则,避免一次性加载所有规则
# 路径规范化
- 统一路径格式,避免重复查询
- 缓存规范化结果
# 错误快速返回
- 参数验证失败立即返回,避免不必要的操作
- 权限检查优先执行
# 安全性设计
# 权限控制
- 所有修改操作都需要管理员权限
- 自动检测权限,友好提示用户
- 支持 UAC 提权
# 输入验证
- 严格的参数验证
- 路径规范化防止路径遍历攻击
- 协议和端口范围验证
# 操作审计
- 可选的日志记录功能
- 详细的操作日志
- 便于追踪和审计
# 最小权限原则
- 仅查询操作在普通用户下运行(有限功能)
- 仅修改操作需要管理员权限
# 兼容性设计
# Windows 7 支持
- 使用 Go 1.21 编译以确保兼容性
- 提供专门的 Windows 7 版本
- 测试覆盖 Windows 7 SP1 及以上版本
# 字符编码
- 支持 UTF-8 编码
- 正确处理中文路径和规则名称
- 控制台输出自动设置代码页
# 路径处理
- 支持长路径(Windows 10+)
- 正确处理 UNC 路径
- 路径规范化统一格式
# 安装与配置
# 系统要求
操作系统:
- Windows 7 SP1 及以上
- Windows 8 / 8.1
- Windows 10(所有版本)
- Windows 11(所有版本)
- Windows Server 2008 R2 及以上
权限要求:
- 管理员权限(用于修改防火墙规则)
- 普通用户权限(用于查询操作)
其他要求:
- Windows Defender 防火墙服务已启动
- 足够的磁盘空间(约 10MB)
# 安装方式
# 方式 1:直接运行可执行文件
下载程序:
- 下载最新版本的 mbfirewall.exe 或 mbfirewall_v1.0.43.exe
- Windows 7 用户下载 mbfirewall_v1.0.43_win7.exe
放置文件:
- 将文件放置到任意目录(建议 C:\Program Files\MBfirewall\)
- 或放置到系统 PATH 目录以便全局访问
运行程序:
- 双击运行启动 GUI 模式
- 或在命令行运行启动 CLI 模式
注意:
- 首次运行会请求管理员权限(UAC 提示)
- 如果以普通用户运行,某些功能可能受限
# 方式 2:从源码编译
前置要求:
- Go 1.21 或更高版本
- Windows SDK(通常随 Visual Studio 或 Build Tools 安装)
- Git(可选,用于克隆源码)
编译步骤:
- 克隆仓库(如果使用 Git):
git clone https://github.com/yourusername/mbfirewall.git
cd mbfirewall/mbfirewall
或直接下载源码压缩包并解压。
- 编译 GUI 版本(无控制台窗口):
go build -ldflags="-H windowsgui" -o mbfirewall.exe
- 编译控制台版本(用于 CLI):
go build -o mbfirewall_console.exe
- 编译 Windows 7 兼容版本:
# 使用 Go 1.21
go build -ldflags="-H windowsgui" -o mbfirewall_win7.exe
资源文件集成: 如果需要集成图标和清单文件:
准备资源文件:
- mbfirewall.ico:程序图标
- manifest.xml:程序清单文件(用于 UAC 提权)
使用 windres 编译资源(如果使用 rc 文件):
windres -i resource.rc -o resource.syso
go build -ldflags="-H windowsgui" -o mbfirewall.exe
# 配置文件
MBfirewall 使用 JSON 格式的配置文件存储设置:
配置文件位置:
- 设置文件: %APPDATA%\MBfirewall\config\settings.json
- 应用配置: %APPDATA%\MBfirewall\config\apps.json
默认设置:
{
"auto_refresh": true,
"refresh_interval": 30,
"create_both_rules": true,
"enable_new_rules": true,
"default_protocol": "any",
"rule_prefix": "候鸟浏览器 ",
"log_level": "info",
"log_retention_days": 30,
"check_file_exists": false,
"confirm_on_delete": true,
"minimize_to_tray": false,
"start_minimized": false,
"language": "zh-CN"
}
设置说明:
| 设置项 | 说明 | 默认值 |
|---|---|---|
| rule_prefix | 规则名称前缀 | "候鸟浏览器 " |
| auto_refresh | GUI 模式下自动刷新状态 | true |
| refresh_interval | 刷新间隔(秒) | 30 |
| check_file_exists | 添加规则前检查文件是否存在 | false |
| log_level | 日志级别(debug/info/warn/error) | "info" |
| log_retention_days | 日志保留天数 | 30 |
修改配置: 配置文件会在首次运行时自动创建。可以手动编辑配置文件来修改设置。
# 日志配置
日志文件位置: %APPDATA%\MBfirewall\logs\
日志文件名格式: mbfirewall_YYYYMMDD.log
启用日志:
- GUI 模式:启动时添加 --enable-log 参数
- CLI 模式:在命令前添加 --enable-log
例如:
mbfirewall.exe --enable-log status
# GUI 使用指南
# 启动程序
启动方式:
- 双击 mbfirewall.exe 启动 GUI 模式
- 或在命令行运行 mbfirewall.exe(无参数)
首次运行:
- 如果未以管理员身份运行,会弹出 UAC 提示请求管理员权限
- 点击 “是” 允许提权
- 程序会自动创建配置目录和日志目录
# 主界面介绍
界面布局:
┌──────────────────────────────────────────────────────────┐
│ MB 防火墙管理工具 [ 最小化 ][ 关闭 ] │
├──────────────────────────────────────────────────────────┤
│ │
│ 防火墙状态 │
│ ┌───────────┬───────────┬───────────┐ │
│ │ 域网络 │ 专用网络 │ 公用网络 │ │
│ │ ✅ 启用 │ ✅ 启用 │ ❌ 禁用 │ │
│ └───────────┴───────────┴───────────┘ │
│ │
│ 规则总数: 150 │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ [刷新] [添加规则] [删除规则] [导出] [导入] │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ 规则列表 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 名称 │ 状态 │ 方向 │ 操作 │ │
│ ├─────────────────────────────────────────────────────┤ │
│ │ 候鸟浏览器 - app.exe ... │ ✅ │ 入站 │ [ 删除 ] │ │
│ │ 候鸟浏览器 - app.exe... │ ✅ │ 出站 │ [ 删除 ] │ │
│ │ ... │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 搜索: [____________] [ 过滤 ] │
│ │
└──────────────────────────────────────────────────────────┘
主要组件:
- 状态栏:显示三个配置文件的状态(域 / 专用 / 公用)
- 规则总数:显示当前防火墙规则总数
- 操作按钮:刷新、添加、删除、导出、导入
- 规则列表:显示所有防火墙规则
- 搜索框:过滤规则列表
# 基本操作
# 查看防火墙状态
启动程序后,主界面会自动显示当前防火墙状态:
- 绿色 ✅ 表示已启用
- 红色 ❌ 表示已禁用 点击 “刷新” 按钮可以手动更新状态。
# 添加防火墙规则
步骤:
- 点击 “添加规则” 按钮
- 在弹出对话框中:
- 选择或输入程序路径
- 设置规则名称(可选)
- 选择方向(入站 / 出站 / 双向)
- 选择协议(TCP/UDP/ICMP/ 任意)
- 设置端口(可选)
- 点击 “确定” 添加规则
快捷方式:
- 可以拖拽程序文件到界面直接添加
- 支持右键菜单添加规则
# 删除防火墙规则
步骤:
- 在规则列表中选择要删除的规则
- 点击 “删除规则” 按钮
- 确认删除操作
批量删除:
- 按住 Ctrl 键选择多个规则
- 按住 Shift 键选择连续规则
- 点击 “删除规则” 批量删除
# 搜索和过滤规则
搜索功能:
- 在搜索框中输入关键词
- 实时过滤规则列表
- 支持按名称、路径、描述搜索
前缀过滤:
- 可以选择特定前缀过滤规则
- 例如:“候鸟浏览器” 前缀显示所有候鸟浏览器规则
# 导出规则
步骤:
- 点击 “导出” 按钮
- 选择保存位置
- 可选:设置前缀过滤
- 点击 “保存”
导出的文件为 JSON 格式,可以用于备份或导入到其他计算机。
# 导入规则
步骤:
- 点击 “导入” 按钮
- 选择 JSON 配置文件
- 确认导入操作
导入时会显示进度和结果,失败的规则会标记出来。
# 系统托盘
托盘图标:
- 程序最小化后会显示在系统托盘
- 右键图标可以:
- 显示主窗口
- 退出程序
- 查看防火墙状态
自动刷新:
- 可以设置自动刷新间隔
- 在系统托盘中实时显示防火墙状态
# CLI 使用指南
# 命令格式
基本格式:
mbfirewall.exe [命令] [选项]
启用日志:
mbfirewall.exe --enable-log [命令] [选项]
静默模式:
大多数命令支持 --silent 选项,静默模式下:
- 不输出任何信息到控制台
- 仅通过退出代码返回结果
- 适合在脚本中使用
# 命令速查表
| 命令 | 功能 | 示例 |
|---|---|---|
| status | 查询防火墙状态 | mbfirewall.exe status |
| check | 检查程序规则 | mbfirewall.exe check --app "C:\app.exe" |
| list | 列出规则 | mbfirewall.exe list --prefix "候鸟浏览器" |
| add | 添加规则 | mbfirewall.exe add --app "C:\app.exe" |
| add-mbbrowser | 添加候鸟浏览器规则 | mbfirewall.exe add-mbbrowser |
| remove | 删除规则 | mbfirewall.exe remove --app "C:\app.exe" |
| enable | 启用防火墙 | mbfirewall.exe enable --profile all |
| disable | 禁用防火墙 | mbfirewall.exe disable --profile public |
| export | 导出规则 | mbfirewall.exe export --output "backup.json" |
| import | 导入规则 | mbfirewall.exe import --input "backup.json" |
| version | 显示版本 | mbfirewall.exe version |
| help | 显示帮助 | mbfirewall.exe help |
# 退出代码
所有命令都会返回标准的退出代码:
| 代码 | 含义 | 说明 |
|---|---|---|
| 0 | 成功 | 操作成功完成 |
| 1 | 一般错误 | 操作失败,查看错误信息 |
| 2 | 权限不足 | 需要管理员权限 |
| 3 | 参数无效 | 命令行参数错误 |
| 4 | 未找到 | 指定的资源不存在 |
在批处理脚本中使用:
@echo off
mbfirewall.exe status --silent
if %ERRORLEVEL% EQU 0 (
echo 防火墙已启用
) else (
echo 防火墙未启用或检查失败
)
在 PowerShell 中使用:
.\mbfirewall.exe status --silent
if ($LASTEXITCODE -eq 0) {
Write-Host "防火墙已启用"
} else {
Write-Host "防火墙未启用或检查失败"
}
# 实际应用示例
# 示例 1:自动化部署脚本
@echo off
echo 正在配置防火墙规则 ...
REM 添加应用程序规则
mbfirewall.exe add --app "C:\MyApp\server.exe" --name "MyApp Server" --direction inbound --protocol tcp --ports 8080
if %ERRORLEVEL% NEQ 0 (
echo 错误: 无法添加防火墙规则
exit /b 1
)
echo 防火墙配置完成!
# 示例 2:批量配置多个应用
@echo off
echo 批量添加防火墙规则 ...
mbfirewall.exe add --batch "config\production_apps.json"
if %ERRORLEVEL% EQU 0 (
echo 成功添加所有规则
) else (
echo 部分规则添加失败,请查看详细信息
)
# 示例 3:定期备份规则
@echo off
set BACKUP_DIR=backup\%date:~0,4%%date:~5,2%%date:~8,2%
mkdir "%BACKUP_DIR%"
echo 导出防火墙规则 ...
mbfirewall.exe export --output "%BACKUP_DIR%\firewall_rules.json"
echo 备份完成: %BACKUP_DIR%
# 示例 4:应用安装程序集成
@echo off
echo 安装应用程序 ...
REM 安装应用
installer.exe /S
echo 配置防火墙 ...
mbfirewall.exe add --app "%ProgramFiles%\MyApp\app.exe" --name "MyApp" --silent
if %ERRORLEVEL% EQU 0 (
echo 防火墙配置成功
) else (
echo 警告: 防火墙配置失败,可能需要手动配置
)
# API 集成与开发
MBfirewall 提供了完整的命令行接口,可以通过进程调用方式集成到其他应用程序中。
# C++ 集成示例
# 基本调用封装
#include <windows.h>
#include <string>
#include <iostream>
// 执行 mbfirewall.exe 命令
int ExecuteFirewallCommand(const std::wstring& command, std::wstring& output) {
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
// 创建管道用于读取输出
HANDLE hReadPipe, hWritePipe;
if (!CreatePipe(&hReadPipe, &hWritePipe, &sa, 0)) {
return -1;
}
// 确保读取句柄不被继承
SetHandleInformation(hReadPipe, HANDLE_FLAG_INHERIT, 0);
STARTUPINFOW si = { sizeof(STARTUPINFOW) };
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdOutput = hWritePipe;
si.hStdError = hWritePipe;
si.wShowWindow = SW_HIDE;
PROCESS_INFORMATION pi = { 0 };
std::wstring cmdLine = L"mbfirewall.exe " + command;
// 创建进程
BOOL success = CreateProcessW(
NULL,
const_cast<LPWSTR>(cmdLine.c_str()),
NULL, NULL, TRUE,
CREATE_NO_WINDOW,
NULL, NULL,
&si, &pi
);
if (!success) {
CloseHandle(hReadPipe);
CloseHandle(hWritePipe);
return -1;
}
CloseHandle(hWritePipe);
// 读取输出
char buffer[4096];
DWORD bytesRead;
std::string result;
while (ReadFile(hReadPipe, buffer, sizeof(buffer) - 1, &bytesRead, NULL) && bytesRead > 0) {
buffer[bytesRead] = '\0';
result += buffer;
}
// 等待进程结束
WaitForSingleObject(pi.hProcess, INFINITE);
// 获取退出码
DWORD exitCode;
GetExitCodeProcess(pi.hProcess, &exitCode);
CloseHandle(hReadPipe);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
// 转换输出为 wstring
int len = MultiByteToWideChar(CP_UTF8, 0, result.c_str(), -1, NULL, 0);
if (len > 0) {
wchar_t* wbuffer = new wchar_t[len];
MultiByteToWideChar(CP_UTF8, 0, result.c_str(), -1, wbuffer, len);
output = wbuffer;
delete[] wbuffer;
}
return exitCode;
}
# 高级封装类
class MBFirewallManager {
private:
std::wstring exePath;
int Execute(const std::wstring& args, std::wstring& output) {
std::wstring fullCmd = args;
return ExecuteFirewallCommand(fullCmd, output);
}
public:
MBFirewallManager(const std::wstring& path = L"mbfirewall.exe")
: exePath(path) {}
// 检查防火墙状态
bool IsFirewallEnabled() {
std::wstring output;
return Execute(L"status --silent", output) == 0;
}
// 添加程序规则
bool AddProgramRule(const std::wstring& appPath, const std::wstring& name) {
std::wstring output;
std::wstring cmd = L"add --app \"" + appPath + L"\" --name \"" + name + L"\" --dir both --silent";
return Execute(cmd, output) == 0;
}
// 删除程序规则
bool RemoveProgramRule(const std::wstring& appPath) {
std::wstring output;
std::wstring cmd = L"remove --app \"" + appPath + L"\" --silent";
return Execute(cmd, output) == 0;
}
// 检查程序规则状态
bool IsProgramRuleEnabled(const std::wstring& appPath) {
std::wstring output;
std::wstring cmd = L"check --app \"" + appPath + L"\" --silent";
return Execute(cmd, output) == 0;
}
// 启用防火墙
bool EnableFirewall(const std::wstring& profile = L"all") {
std::wstring output;
std::wstring cmd = L"enable --profile " + profile + L" --silent";
return Execute(cmd, output) == 0;
}
// 禁用防火墙
bool DisableFirewall(const std::wstring& profile = L"all") {
std::wstring output;
std::wstring cmd = L"disable --profile " + profile + L" --silent";
return Execute(cmd, output) == 0;
}
// 批量添加规则(使用配置文件)
bool ImportRules(const std::wstring& configPath) {
std::wstring output;
std::wstring cmd = L"import --input \"" + configPath + L"\" --silent";
return Execute(cmd, output) == 0;
}
};
# 使用示例
int main() {
MBFirewallManager fw;
// 检查防火墙
if (fw.IsFirewallEnabled()) {
std::wcout << L"防火墙已启用" << std::endl;
}
// 添加候鸟浏览器规则
if (fw.AddProgramRule(L"C:\\Program Files\\MBBrowser\\mbbrowser.exe", L"候鸟浏览器")) {
std::wcout << L"规则添加成功" << std::endl;
}
// 检查规则状态
if (fw.IsProgramRuleEnabled(L"C:\\Program Files\\MBBrowser\\mbbrowser.exe")) {
std::wcout << L"规则已启用" << std::endl;
}
return 0;
}
# PowerShell 集成
# 封装函数
function Add-FirewallRule {
param(
[string]$AppPath,
[string]$Name
)
$result = & "mbfirewall.exe" add --app $AppPath --name $Name --silent
return $LASTEXITCODE -eq 0
}
function Check-FirewallStatus {
$result = & "mbfirewall.exe" status --silent
return $LASTEXITCODE -eq 0
}
# 使用示例
if (Check-FirewallStatus) {
Write-Host "防火墙已启用"
}
if (Add-FirewallRule -AppPath "C:\App\app.exe" -Name "MyApp") {
Write-Host "规则添加成功"
}
# Python 集成
import subprocess
import json
class MBFirewallManager:
def __init__(self, exe_path="mbfirewall.exe"):
self.exe_path = exe_path
def execute(self, args, silent=True):
cmd = [self.exe_path] + args
if silent:
cmd.append("--silent")
result = subprocess.run(cmd, capture_output=True, text=True)
return result.returncode == 0, result.stdout, result.stderr
def add_rule(self, app_path, name=None):
args = ["add", "--app", app_path]
if name:
args.extend(["--name", name])
return self.execute(args)[0]
def check_status(self, app_path):
args = ["check", "--app", app_path]
return self.execute(args)[0]
def enable_firewall(self, profile="all"):
args = ["enable", "--profile", profile]
return self.execute(args)[0]
# 使用示例
fw = MBFirewallManager()
if fw.add_rule("C:\\App\\app.exe", "MyApp"):
print("规则添加成功")
# 候鸟浏览器集成
MBfirewall 为候鸟浏览器提供了专门的深度集成功能,使得配置候鸟浏览器的防火墙规则变得极其简单。
# 集成功能概述
核心特性:
- 自动识别安装路径(从注册表读取)
- 一键配置所有规则(18 条规则)
- 智能跳过不存在的文件
- 详细的执行反馈
支持的程序: 候鸟浏览器的 9 个核心程序文件,每个程序自动添加入站和出站规则,共 18 条规则。
# 使用方法
最简单的使用方式:
mbfirewall.exe add-mbbrowser
启用日志的使用方式:
mbfirewall.exe --enable-log add-mbbrowser
# 工作原理详解
# 安装路径识别
MBfirewall 从以下注册表路径读取候鸟浏览器安装路径:
HKEY_CURRENT_USER\SOFTWARE\MBbrowser\Path
如果注册表中没有该路径,命令会失败并给出明确的错误提示。
# 程序文件检测
MBfirewall 会检查以下程序文件是否存在:
| 程序文件 | 路径位置 | 说明 |
|---|---|---|
| mbbrowser.exe | {安装路径}\mbbrowser.exe | 候鸟浏览器主程序 |
| cdp.exe | {安装路径}\cdp.exe | Chrome DevTools Protocol |
| mbservice.exe | {安装路径}\mbservice.exe | 候鸟浏览器后台服务 |
| apiserver.exe | {安装路径}\apiserver.exe | API 服务器 |
| chrome.exe | {安装路径}\MBbrowser\chrome.exe | Chrome 浏览器内核 |
| chrome_proxy.exe | {安装路径}\MBbrowser\chrome_proxy.exe | Chrome 代理程序 |
| chrome_pwa_launcher.exe | {安装路径}\MBbrowser\chrome_pwa_launcher.exe | Chrome PWA 启动器 |
| chromedriver.exe | {安装路径}\MBbrowser\chromedriver.exe | 浏览器自动化驱动 |
| notification_helper.exe | {安装路径}\MBbrowser\notification_helper.exe | 通知助手 |
智能处理:
- 如果文件不存在,会跳过该文件并继续处理其他文件
- 显示警告信息,但不影响其他文件的配置
# 规则配置
每个程序会添加两条规则:
- 入站规则:允许外部访问程序
- 出站规则:允许程序访问外部
协议和端口配置:
| 程序 | 协议 | 端口 | 说明 |
|---|---|---|---|
| mbbrowser.exe | any | * | 主程序需要全部网络访问 |
| cdp.exe | tcp | 9222 | CDP 调试服务端口 |
| mbservice.exe | any | * | 后台服务需要全部网络访问 |
| apiserver.exe | tcp | 80,443 | API 服务器标准端口 |
| chrome.exe | tcp | 80,443 | Web 访问标准端口 |
| chrome_proxy.exe | tcp | 80,443 | Web 访问标准端口 |
| chrome_pwa_launcher.exe | tcp | 80,443 | Web 访问标准端口 |
| chromedriver.exe | tcp | 9515 | ChromeDriver 默认端口 |
| notification_helper.exe | tcp | 80,443 | 通知服务端口 |
# 执行结果展示
成功示例:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 执行结果
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 成功添加全部 18 条规则
已为以下程序添加防火墙规则:
• mbbrowser.exe
• cdp.exe
• mbservice.exe
• apiserver.exe
• chrome.exe
• chrome_proxy.exe
• chrome_pwa_launcher.exe
• chromedriver.exe
• notification_helper.exe
每个程序都添加了入站和出站规则