一个专为游戏玩家设计的 Console-first 工具,提供基于进程监控的自动化与游玩时长统计。
- 进程监控: 支持 WMI 和 ETW 两种监控方式自动检测游戏进程的启动和退出
- WMI 监控: 兼容性最好,适用于所有 Windows 版本
- ETW 监控: 低延迟高性能,需要管理员权限
- 游戏时间统计: 记录每个游戏的运行时间
- HDR 控制: 为将来的 HDR 自动切换预留接口(当前为空实现)
- 配置管理: 支持 YAML 配置文件,可添加/移除游戏
- 交互式命令行: 默认提供图形化的终端界面,可视化管理监控、配置、统计与工具
- 自动降级: ETW 监控失败时自动回退到 WMI 监控
- 拖拽添加: 拖动游戏快捷方式或exe到程序的快捷方式上,自动添加到配置
- Windows 11 (推荐) 或 Windows 10
- .NET 8.0 Runtime
- 管理员权限(用于进程监控)
# 体验全新互动命令行(无命令时默认进入)
dotnet run --project .\GameHelper.ConsoleHost --
# 启动监控(默认使用 ETW,需要管理员权限)
dotnet run --project .\GameHelper.ConsoleHost -- monitor [--config <path>] [--debug]
# 显式使用 ETW 监控(需要管理员权限,更低延迟)
dotnet run --project .\GameHelper.ConsoleHost -- monitor --monitor-type ETW [--config <path>] [--debug]
# 使用 WMI 监控(兼容性最好,无需管理员权限)
dotnet run --project .\GameHelper.ConsoleHost -- monitor --monitor-type WMI [--config <path>] [--debug]
# Dry-run 演练(跳过实时监控模块,便于跨平台验证)
dotnet run --project .\GameHelper.ConsoleHost -- monitor --monitor-dry-run [--config <path>] [--debug]
# 统计(支持按游戏名过滤)
dotnet run --project .\GameHelper.ConsoleHost -- stats [--game <name>] [--config <path>] [--debug]
# 配置管理
dotnet run --project .\GameHelper.ConsoleHost -- config list [--config <path>] [--debug]
dotnet run --project .\GameHelper.ConsoleHost -- config add <exe> [--config <path>] [--debug]
dotnet run --project .\GameHelper.ConsoleHost -- config remove <exe> [--config <path>] [--debug]
# 配置校验 / 格式转换
dotnet run --project .\GameHelper.ConsoleHost -- validate-config [--config <path>]
dotnet run --project .\GameHelper.ConsoleHost -- convert-config互动模式会在终端中提供面板、选择列表与可视化表格,帮助你:
- 一目了然地查看当前生效的配置文件、监控模式与日志级别。
- 通过选择和表单快速添加、编辑或删除游戏条目,并控制别名/启用状态/HDR 设置。
- 查看两周内的游戏时长统计,自动汇总总时长与会话次数。
- 一键触发配置转换与校验工具,结果将以高亮表格方式呈现。
dotnet clean .\GameHelper.ConsoleHost -c Release
dotnet publish .\GameHelper.ConsoleHost -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false产物:GameHelper.ConsoleHost/bin/Release/net8.0-windows/win-x64/publish/
仓库内置的 GitHub Actions 工作流会在推送形如 v* 的标签时自动构建自包含的 Win-x64 可执行文件,并将压缩包上传到 Release 资产中。如果你想发布 0.0.1 版本,可以执行:
git tag v0.0.1
git push origin v0.0.1也可以通过 GitHub 页面手动触发 Release 工作流,并在输入参数中指定要发布的标签(例如 v0.0.1)。
$pub = ".\GameHelper.ConsoleHost\bin\Release\net8.0-windows\win-x64\publish"
& "$pub\GameHelper.ConsoleHost.exe" monitor --config "$env:APPDATA\GameHelper\config.yml" --debug
# 或查看统计:
& "$pub\GameHelper.ConsoleHost.exe" stats --config "$env:APPDATA\GameHelper\config.yml"启动时会输出:
- Using config: <配置文件路径>
- Build time: yyyy-MM-dd HH:mm:ss
- Log level: Information/Debug
路径:%AppData%/GameHelper/config.yml
# 全局设置
processMonitorType: ETW # 可选: ETW (默认,需管理员权限) 或 WMI (兼容性最好)
# 游戏配置
games:
- name: "witcher3.exe"
alias: "巫师3"
isEnabled: true
hdrEnabled: true配置说明:
processMonitorType: 进程监控方式,可选ETW(默认,需管理员权限)或WMI(兼容性最好)name: 匹配进程名(大小写不敏感)alias: 显示名称isEnabled: 是否启用该游戏的所有自动化功能hdrEnabled: 为将来 HDR 控制预留,当前不会实际切换 HDR
- 进程检测: 使用 WMI 或 ETW 监控系统进程启动/退出事件
- 游戏识别: 根据配置文件中的
name字段匹配进程 - 状态管理: 跟踪活跃游戏进程,记录启动/停止时间
- HDR 控制: 当有游戏运行时调用 HDR 控制器(当前为空实现)
- 时间统计: 将游戏运行时间保存到 CSV 文件
| 特性 | WMI | ETW |
|---|---|---|
| 延迟 | 1-3 秒 | < 1 秒 |
| 权限要求 | 普通用户 | 管理员 |
| 兼容性 | 所有 Windows 版本 | Windows Vista+ |
| 资源占用 | 中等 | 低 |
| 推荐场景 | 日常使用 | 对延迟敏感的场景 |
- 双重监控架构: 支持 WMI 和 ETW 两种进程监控方式
- 自动降级机制: ETW 失败时自动回退到 WMI,确保服务可用性
- 事件驱动架构: 使用 Windows 原生事件系统监控进程
- 资源优化: 空闲时几乎不消耗系统资源
- 文件容错: 配置和数据文件解析失败时自动重建
- 命令行优先: 完整的 CLI 界面,支持脚本化和自动化
GameHelper Console
Usage:
interactive 启动全新的互动命令行体验(无命令时默认)
monitor [--config <path>] [--monitor-type <type>] [--debug]
config list [--config <path>] [--debug]
config add <exe> [--config <path>] [--debug]
config remove <exe> [--config <path>] [--debug]
stats [--game <name>] [--config <path>] [--debug]
convert-config
validate-config
Global options:
--config, -c Override path to config.yml
--monitor-type Process monitor type: ETW (default) or WMI
ETW provides lower latency but requires admin privileges
WMI works without admin privileges but has higher latency
--monitor-dry-run Dry-run monitor flow without starting background services
--debug, -v Enable verbose debug logging
--interactive 强制进入互动模式(等价于 interactive 命令)
- 命令行参数
--monitor-type(最高优先级) - 配置文件
processMonitorType设置 - 默认值 ETW(最低优先级,需管理员权限)
注意:如果 ETW 初始化失败(如非管理员权限),系统会自动降级到 WMI 监控。
如果你从旧版本(默认 WMI)升级到新版本(默认 ETW):
- 无需修改配置:如果你有管理员权限,新版本会自动使用 ETW,性能更好
- 继续使用 WMI:如果你希望保持使用 WMI(如无管理员权限),在配置文件中添加:
processMonitorType: WMI
- 自动降级:如果你没有管理员权限且未配置 WMI,程序会自动降级到 WMI 并记录警告日志
-
进程检测不到
- 检查游戏名称是否正确配置
- 确认游戏进程确实在运行
- 查看调试日志
--debug - 尝试切换监控方式(WMI ↔ ETW)
-
ETW 监控问题
- 权限不足: ETW 需要管理员权限,请以管理员身份运行
- 自动降级: 如果 ETW 失败,程序会自动切换到 WMI
- 防火墙/安全软件: 某些安全软件可能阻止 ETW 访问
- 非管理员环境: 如果无法获得管理员权限,可在配置文件中设置
processMonitorType: WMI
-
配置文件问题
- 使用
validate-config命令检查配置 - 确保 YAML 格式正确
- 检查
processMonitorType值是否为ETW或WMI
- 使用
-
权限问题
- 确保有写入配置目录的权限
- 检查 CSV 文件的写入权限
- 默认推荐: 使用 ETW 监控(默认),获得最佳性能和最低延迟
- 管理员权限: ETW 需要管理员权限,建议以管理员身份运行
- 非管理员环境: 如无法获得管理员权限,在配置文件中设置
processMonitorType: WMI - 开发/测试: 可使用 WMI 监控,无需管理员权限
- 服务器部署: 配置为 Windows 服务并以管理员权限运行
- 故障恢复: 利用自动降级机制确保服务可用性(ETW 失败时自动切换到 WMI)
使用 ETW 的场景:
- 需要快速响应游戏启动(< 1秒)
- 系统资源充足
- 可以获得管理员权限
- 对延迟敏感的自动化场景
使用 WMI 的场景:
- 无法获得管理员权限
- 系统兼容性要求高
- 对延迟不敏感(1-3秒可接受)
- 稳定性优先的生产环境
# 高性能配置(默认)
processMonitorType: ETW # 默认值,可省略
games:
- name: "game.exe"
isEnabled: true # 只监控需要的游戏
hdrEnabled: false # 暂时禁用未实现的功能
# 兼容性配置(无管理员权限)
processMonitorType: WMI
games:
- name: "game.exe"
isEnabled: true
hdrEnabled: false- 游戏启动时自动计时
- 优化计时清单页面
- 进程监听性能优化
- 过滤监听:未启动游戏时不监听
- 只监听配置列表中的进程
- 游戏第一次停止之后,记录fuzzyname,下次可以进行精准进程监听,进一步提升性能
- 弱提示,避免魂游这类游戏被误终止
- 自动开关HDR
- 检测当前HDR开启状态
- 提前开启HDR,避免部分游戏内部未识别HDR(当前实现太粗糙,遇到核心技术问题,暂缓实现)
- 拖动图标到程序上自动添加
- 拖动时自动以快捷方式名替换 alias
- 支持 Steam URL:steam://rungameid/
- 自动扫描游戏(合并原重复项)
- 支持多平台及“学习版”来源
- 存储格式由 JSON 改为 CSV(支持追加写入,避免全量写)
- 本地存储 + 云端同步
- 魂游自动复制存档
- 支持手柄
- 自定义快捷键
- 将命令行改为交互式命令行,提升体验
- 可显示在游戏窗口上方(叠加/OSD)
- 套用游戏图标进行显示
- 游戏方向深度适配(不同游戏风格)
- 番茄钟:提醒活动与用眼休息
- 自动更新
欢迎提交Issue和Pull Request!
- Visual Studio 2022 或 VS Code
- .NET 8.0 SDK
- Windows 11 开发环境
GameHelper.Core: 核心业务逻辑和抽象接口GameHelper.Infrastructure: 基础设施实现(WMI、ETW、文件操作等)GameHelper.ConsoleHost: 控制台应用程序入口GameHelper.Tests: 单元测试和集成测试
IProcessMonitor (接口)
├── WmiProcessMonitor (WMI 实现)
├── EtwProcessMonitor (ETW 实现)
└── NoOpProcessMonitor (测试用空实现)
ProcessMonitorFactory
├── Create() - 创建指定类型的监控器
├── CreateWithFallback() - 创建带降级的监控器
└── CreateNoOp() - 创建空监控器
- .NET 8: 现代 C# 开发平台
- WMI: Windows 进程监控(兼容性方案)
- ETW: Event Tracing for Windows(高性能方案)
- Microsoft.Diagnostics.Tracing.TraceEvent: ETW 事件处理
- YamlDotNet: YAML 配置文件解析
- xUnit: 单元测试框架
- Microsoft.Extensions.Hosting: 后台服务框架
本项目采用双重许可证:
- 开源使用:遵循 AGPL-3.0 许可证,适用于开源项目和非商业用途
- 商业使用:需要购买商业许可证,适用于商业产品、SaaS应用或内部商业系统
详细信息请查看 LICENSE 文件。如需商业许可证,请联系:bwjava819@gmail.com
- 感谢 Microsoft 提供的 WMI 事件系统和 ETW 框架
- 感谢 Microsoft.Diagnostics.Tracing.TraceEvent 项目提供的 ETW 支持
注意:
- 默认使用 ETW 监控,需要管理员权限才能正常运行
- 如果 ETW 初始化失败,程序会自动降级到 WMI 监控
- 如无法获得管理员权限,建议在配置文件中显式设置
processMonitorType: WMI - HDR 切换当前未实现(NoOp),仅记录会话与统计数据
- 程序不会收集或上传任何个人数据