# 系统防火墙规则管理 MBFireWall 完整说明文档

# 概述与简介

# 什么是 MBfirewall?

MBfirewall(MB 防火墙管理工具)是一款专为 Windows 操作系统设计的企业级防火墙规则管理解决方案。它通过图形化界面(GUI)和命令行接口(CLI)两种模式,为用户提供了便捷、高效、安全的 Windows Defender 防火墙规则管理能力。

# 产品定位

MBfirewall 定位于:

  1. 企业级防火墙管理工具:为 IT 管理员提供批量管理防火墙规则的能力
  2. 软件开发集成组件:为软件开发者提供程序化的防火墙规则配置接口
  3. 个人用户安全助手:为普通用户简化 Windows 防火墙的复杂配置过程
  4. 自动化部署工具:支持脚本化部署和批量配置,适合 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 个核心程序文件
  • 为每个程序自动添加入站和出站规则
  • 针对不同程序配置不同的协议和端口要求

支持的程序列表:

  1. mbbrowser.exe:候鸟浏览器主程序(双向,所有协议)
  2. cdp.exe:Chrome DevTools Protocol(TCP,9222 端口)
  3. mbservice.exe:候鸟浏览器后台服务(双向,所有协议)
  4. apiserver.exe:API 服务器(TCP,80/443 端口)
  5. chrome.exe:Chrome 浏览器内核(TCP,80/443 端口)
  6. chrome_proxy.exe:Chrome 代理程序(TCP,80/443 端口)
  7. chrome_pwa_launcher.exe:Chrome PWA 启动器(TCP,80/443 端口)
  8. chromedriver.exe:浏览器自动化驱动(TCP,9515 端口)
  9. notification_helper.exe:通知助手(TCP,80/443 端口)

一条命令完成配置:

mbfirewall.exe add-mbbrowser

这个命令会自动:

  1. 从注册表读取候鸟浏览器安装路径
  2. 检查所有程序文件是否存在
  3. 为每个存在的程序添加入站和出站规则(共 18 条规则)
  4. 显示详细的执行结果和错误信息

# 灵活的参数配置

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 配合配置文件,通过组策略或远程脚本批量部署。

部署步骤:

  1. 准备配置文件(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
    }
  ]
}
  1. 创建部署脚本(deploy.bat):
@echo off
echo 正在部署防火墙规则 ...
mbfirewall.exe import --input "%~dp0apps.json"
if %ERRORLEVEL% EQU 0 (
    echo 防火墙规则部署成功
) else (
    echo 部署失败,请检查日志
    exit /b 1
)
  1. 通过组策略或远程执行脚本批量部署

优势:

  • 一次性部署多台计算机
  • 配置统一,避免遗漏
  • 支持版本控制和回滚
  • 可自动化执行

# 场景 3:个人用户简化配置

需求背景:个人用户在安装软件后,Windows 防火墙会弹出提示,用户经常不知道如何处理,或者需要手动配置复杂规则。

解决方案:使用 MBfirewall GUI 模式,直观地查看和管理防火墙规则。

使用流程:

  1. 运行 mbfirewall.exe 启动图形界面
  2. 查看当前防火墙状态
  3. 添加新程序规则:
    • 点击 "添加规则"
    • 选择程序路径
    • 设置规则名称和参数
    • 确认添加
  4. 查看规则列表,确认规则已添加

优势:

  • 图形界面,操作直观
  • 实时显示状态变化
  • 无需了解命令行
  • 错误提示友好

# 场景 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 专门的候鸟浏览器集成功能,一条命令完成所有配置。

使用步骤:

  1. 确保候鸟浏览器已安装(注册表中有路径记录)
  2. 以管理员身份运行命令:
mbfirewall.exe add-mbbrowser
  1. 等待自动配置完成(约 18 条规则)

优势:

  • 一条命令完成所有配置
  • 自动识别安装路径
  • 智能跳过不存在的文件
  • 详细的执行反馈

# 场景 6:安全审计与合规

需求背景:企业需要定期审计防火墙规则,确保符合安全策略,并生成审计报告。

解决方案:使用 MBfirewall 导出功能,定期导出规则配置,进行审计分析。

审计流程:

  1. 定期导出规则(每日/每周):
@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"
  1. 分析规则配置:

    • 检查是否有未授权的规则
    • 验证规则配置是否符合安全策略
    • 识别异常的端口和协议配置
  2. 生成审计报告:

    • 对比不同时间点的规则变化
    • 记录规则变更历史
    • 生成合规报告

优势:

  • 可追溯的配置历史
  • 便于合规审查
  • 及时发现异常配置
  • 支持自动化审计

# 场景 7:故障排查

需求背景:用户在遇到网络连接问题时,需要检查防火墙规则是否正确配置。

解决方案:使用 MBfirewall 查询功能,快速检查规则状态。

排查步骤:

  1. 检查防火墙整体状态:
mbfirewall.exe status
  1. 检查特定程序规则:
mbfirewall.exe check --app "C:\Program Files\App\app.exe"
  1. 列出所有相关规则:
mbfirewall.exe list --prefix "App"
  1. 根据检查结果修复问题:
    • 如果规则不存在,添加规则
    • 如果规则被禁用,启用规则
    • 如果规则配置错误,删除后重新添加

优势:

  • 快速定位问题
  • 清晰的规则状态显示
  • 支持批量检查
  • 便于远程协助

# 详细功能说明

# 防火墙状态查询(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

工作原理:

  1. 读取安装路径:从注册表 HKEY_CURRENT_USER\SOFTWARE\MBbrowser\Path 读取候鸟浏览器安装路径

  2. 检查程序文件:检查以下 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(通知助手)
  3. 添加规则:为每个存在的程序添加入站和出站规则(共最多 18 条规则)

  4. 显示结果:显示详细的执行结果,包括成功和失败的规则

输出示例:

🔥 候鸟浏览器防火墙规则添加
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📍 安装路径: 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:部分或全部规则添加失败

使用场景:

  • 候鸟浏览器安装后自动配置防火墙
  • 修复候鸟浏览器网络连接问题
  • 重新配置候鸟浏览器防火墙规则

注意事项:

  • 需要管理员权限
  • 需要确保候鸟浏览器已正确安装
  • 如果某些文件不存在,会跳过并继续处理其他文件
  • 如果规则已存在,会跳过(不会覆盖)

故障排查: 如果命令失败,请检查:

  1. 注册表路径:确保 HKEY_CURRENT_USER\SOFTWARE\MBbrowser\Path 存在且有正确的路径值
  2. 文件路径:检查候鸟浏览器安装目录中是否有相应的程序文件
  3. 管理员权限:确保以管理员身份运行命令
  4. 防火墙服务:确保 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:直接运行可执行文件

  1. 下载程序:

    • 下载最新版本的 mbfirewall.exe 或 mbfirewall_v1.0.43.exe
    • Windows 7 用户下载 mbfirewall_v1.0.43_win7.exe
  2. 放置文件:

    • 将文件放置到任意目录(建议 C:\Program Files\MBfirewall\)
    • 或放置到系统 PATH 目录以便全局访问
  3. 运行程序:

    • 双击运行启动 GUI 模式
    • 或在命令行运行启动 CLI 模式

注意:

  • 首次运行会请求管理员权限(UAC 提示)
  • 如果以普通用户运行,某些功能可能受限

# 方式 2:从源码编译

前置要求:

  • Go 1.21 或更高版本
  • Windows SDK(通常随 Visual Studio 或 Build Tools 安装)
  • Git(可选,用于克隆源码)

编译步骤:

  1. 克隆仓库(如果使用 Git):
git clone https://github.com/yourusername/mbfirewall.git
cd mbfirewall/mbfirewall

或直接下载源码压缩包并解压。

  1. 编译 GUI 版本(无控制台窗口):
go build -ldflags="-H windowsgui" -o mbfirewall.exe
  1. 编译控制台版本(用于 CLI):
go build -o mbfirewall_console.exe
  1. 编译 Windows 7 兼容版本:
# 使用 Go 1.21
go build -ldflags="-H windowsgui" -o mbfirewall_win7.exe

资源文件集成: 如果需要集成图标和清单文件:

  1. 准备资源文件:

    • mbfirewall.ico:程序图标
    • manifest.xml:程序清单文件(用于 UAC 提权)
  2. 使用 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 使用指南

# 启动程序

启动方式:

  1. 双击 mbfirewall.exe 启动 GUI 模式
  2. 或在命令行运行 mbfirewall.exe(无参数)

首次运行:

  • 如果未以管理员身份运行,会弹出 UAC 提示请求管理员权限
  • 点击 “是” 允许提权
  • 程序会自动创建配置目录和日志目录

# 主界面介绍

界面布局:

┌──────────────────────────────────────────────────────────┐
│  MB 防火墙管理工具                 [ 最小化 ][ 关闭 ]      │
├──────────────────────────────────────────────────────────┤
│                                                          │
│   防火墙状态                                              │
│  ┌───────────┬───────────┬───────────┐                   │
│  │  域网络    │  专用网络 │  公用网络  │                   │
│  │  ✅ 启用  │  ✅ 启用  │  ❌ 禁用  │                   │
│  └───────────┴───────────┴───────────┘                   │
│                                                          │
│   规则总数: 150                                           │
│                                                          │
│  ┌───────────────────────────────────────────────┐       │
│  │ [刷新] [添加规则] [删除规则] [导出] [导入]      │        │
│  └───────────────────────────────────────────────┘       │
│                                                          │
│   规则列表                                                │
│  ┌─────────────────────────────────────────────────────┐ │
│  │  名称                     │  状态  │  方向  │  操作  │ │
│  ├─────────────────────────────────────────────────────┤ │
│  │  候鸟浏览器 - app.exe ... │ ✅   │  入站  │ [ 删除 ] │ │
│  │  候鸟浏览器 - app.exe... │ ✅   │  出站  │ [ 删除 ]  │ │
│  │ ...                                                 │ │
│  └─────────────────────────────────────────────────────┘ │
│                                                          │
│   搜索: [____________] [ 过滤 ]                           │
│                                                          │
└──────────────────────────────────────────────────────────┘

主要组件:

  1. 状态栏:显示三个配置文件的状态(域 / 专用 / 公用)
  2. 规则总数:显示当前防火墙规则总数
  3. 操作按钮:刷新、添加、删除、导出、导入
  4. 规则列表:显示所有防火墙规则
  5. 搜索框:过滤规则列表

# 基本操作

# 查看防火墙状态

启动程序后,主界面会自动显示当前防火墙状态:

  • 绿色 ✅ 表示已启用
  • 红色 ❌ 表示已禁用 点击 “刷新” 按钮可以手动更新状态。

# 添加防火墙规则

步骤:

  1. 点击 “添加规则” 按钮
  2. 在弹出对话框中:
    • 选择或输入程序路径
    • 设置规则名称(可选)
    • 选择方向(入站 / 出站 / 双向)
    • 选择协议(TCP/UDP/ICMP/ 任意)
    • 设置端口(可选)
  3. 点击 “确定” 添加规则

快捷方式:

  • 可以拖拽程序文件到界面直接添加
  • 支持右键菜单添加规则

# 删除防火墙规则

步骤:

  1. 在规则列表中选择要删除的规则
  2. 点击 “删除规则” 按钮
  3. 确认删除操作

批量删除:

  • 按住 Ctrl 键选择多个规则
  • 按住 Shift 键选择连续规则
  • 点击 “删除规则” 批量删除

# 搜索和过滤规则

搜索功能:

  • 在搜索框中输入关键词
  • 实时过滤规则列表
  • 支持按名称、路径、描述搜索

前缀过滤:

  • 可以选择特定前缀过滤规则
  • 例如:“候鸟浏览器” 前缀显示所有候鸟浏览器规则

# 导出规则

步骤:

  1. 点击 “导出” 按钮
  2. 选择保存位置
  3. 可选:设置前缀过滤
  4. 点击 “保存”

导出的文件为 JSON 格式,可以用于备份或导入到其他计算机。

# 导入规则

步骤:

  1. 点击 “导入” 按钮
  2. 选择 JSON 配置文件
  3. 确认导入操作

导入时会显示进度和结果,失败的规则会标记出来。

# 系统托盘

托盘图标:

  • 程序最小化后会显示在系统托盘
  • 右键图标可以:
    • 显示主窗口
    • 退出程序
    • 查看防火墙状态

自动刷新:

  • 可以设置自动刷新间隔
  • 在系统托盘中实时显示防火墙状态

# 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 通知助手

智能处理:

  • 如果文件不存在,会跳过该文件并继续处理其他文件
  • 显示警告信息,但不影响其他文件的配置

# 规则配置

每个程序会添加两条规则:

  1. 入站规则:允许外部访问程序
  2. 出站规则:允许程序访问外部

协议和端口配置:

程序 协议 端口 说明
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
每个程序都添加了入站和出站规则