# 进程卫士 **Repository Path**: whqfd/pg ## Basic Information - **Project Name**: 进程卫士 - **Description**: 进程卫士(Process Guardian,项目缩写:PG)是一个功能强大的进程守护系统,包含一个基于 Windows Forms 的图形化配置工具和一个 Windows 后台服务程序,二者协同工作以实现对关键进程的自动化监控与管理。 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-25 - **Last Updated**: 2025-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 进程卫士 (Process Guardian) 进程卫士(Process Guardian,项目缩写:PG)是一个功能强大的进程守护系统,包含一个基于 Windows Forms 的图形化配置工具和一个 Windows 后台服务程序,二者协同工作以实现对关键进程的自动化监控与管理。 ## 功能特性 ### 1. 配置工具 (Process Guardian Configurator) - **进程枚举**:自动扫描并列出当前系统中所有正在运行的进程,显示进程名称、PID、可执行文件完整路径、命令行参数等信息 - **进程守护配置**:允许用户选择任意进程并启用“进程守护”功能,系统将记录该进程的启动路径和原始参数,并在后台服务中监控其运行状态 - **定时重启策略配置**:支持为进程设置定时重启规则,包括预设周期(每小时、每天)或自定义时间间隔 - **配置持久化**:所有配置信息序列化保存至本地 JSON 配置文件 (pg_config.json) - **手动测试功能**:提供启动/停止测试按钮,允许用户手动触发指定进程的启动或终止操作 - **实时状态显示**:在配置列表中显示进程的实时运行状态(运行中/已停止)和最后启动时间,默认每30秒自动更新一次 - **右键菜单操作**:支持右键点击配置列表中的进程项,提供启动、停止、删除等快捷操作 - **操作日志记录**:将所有用户操作和系统事件记录到本地日志文件中,日志按日期命名并存储在Logs子目录中 ### 2. 后台服务 (Process Guardian Service) - **自动启动**:操作系统启动时自动运行,无需用户登录即可工作 - **实时配置检测**:以固定时间间隔(默认每5秒)轮询读取配置文件,检测配置变更 - **进程守护**:持续监控被标记为"需守护"的进程,若发现已退出,则立即依据记录的路径和参数重新启动 - **定时重启**:根据设定的周期计算下次执行时间,到达时间点后若目标进程仍在运行,则先终止再重启 - **异常处理**:具备健壮的异常处理机制,确保在配置错误、文件读取失败、进程启动异常等情况下仍能继续运行 - **事件日志**:使用事件日志记录关键操作和错误信息,便于排查问题 - **运行时间记录**:在重启进程时自动更新最后运行时间到配置文件中,包括最后启动时间和最后停止时间 ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ Process Guardian │ ├─────────────────────────────────────────────────────────────┤ │ ┌─────────────────┐ ┌─────────────────────────────────┐ │ │ │ Configurator │ │ Service (Worker) │ │ │ │ (WinForms) │ │ │ │ │ │ │ │ • Auto-start on OS boot │ │ │ │ • Process │ │ • Monitor config changes │ │ │ │ enumeration │◄───┤ • Process protection │ │ │ │ • Config │ │ • Scheduled restarts │ │ │ │ management │ │ • Event logging │ │ │ │ • Manual test │ │ │ │ │ │ controls │ │ │ │ │ └─────────────────┘ └─────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 安装与部署 ### 编译要求 - .NET 6.0 SDK 或更高版本 - Windows 操作系统(支持 Windows 服务) ### 编译步骤 1. 克隆或下载项目源代码 2. 打开命令行并导航到项目根目录 3. 运行以下命令编译整个解决方案: ```bash dotnet build -c Release ``` ### 部署步骤 1. **配置工具部署**: - 编译后的可执行文件位于 `PG\Configurator\bin\Release\net6.0-windows\` 目录 - 可直接运行 `PG.Configurator.exe` 启动图形化配置工具 2. **服务部署**: - 编译后的服务程序位于 `PG\Service\bin\Release\net6.0\` 目录 - 使用管理员权限打开命令行,运行以下命令安装服务: ```bash # 安装服务 sc create "ProcessGuardianService" binPath="完整路径\PG.Service.exe" # 启动服务 sc start "ProcessGuardianService" # 设置为自动启动 sc config "ProcessGuardianService" start= auto ``` ### 配置文件 - 配置文件名称:`pg_config.json` - 默认位置:服务程序所在目录 - 格式:JSON - 包含信息:被守护进程的路径、命令行参数、是否启用守护、重启周期类型及数值、最后启动时间、最后停止时间和当前运行状态等 ## 使用方法 ### 配置工具使用 1. 启动 `PG.Configurator.exe` 2. 在"进程列表"中查看当前运行的所有进程 3. 选择需要守护的进程 4. 在配置网格中设置: - "Protected":是否启用进程守护 - "Restart Type":重启类型(None/Hourly/Daily/Custom) - "Restart Value":自定义重启间隔值 - "Enabled":是否启用此配置 5. 点击"Save Configuration"保存配置 6. 使用"Start Process (Test)"和"Stop Process (Test)"按钮进行测试 7. 实时状态列显示进程运行状态(运行中/已停止)和最后启动时间 8. 右键点击配置列表中的进程项可快速启动、停止或删除配置 9. 操作日志自动记录到Logs目录下的日期命名文件中 ### 服务运行 - 服务安装后会自动启动并在后台运行 - 服务会持续监控 `pg_config.json` 文件的变更 - 根据配置文件中的规则执行进程守护和定时重启任务 - 所有操作和错误信息会记录到 Windows 事件日志中 ## 技术实现 ### 共享库 (PG.Common) - **ConfigEntry.cs**:配置项数据模型 - **ConfigurationManager.cs**:配置文件读写管理 - **ProcessManager.cs**:进程操作管理 ### 配置工具 (PG.Configurator) - 基于 Windows Forms 实现图形化界面 - 使用 DataGridView 显示进程和配置信息 - 提供直观的配置管理界面 - 实现定时器机制,每30秒更新进程实时状态 - 添加右键菜单支持快速操作 - 集成日志记录功能,记录所有用户操作和系统事件 ### 服务 (PG.Service) - 基于 .NET Worker Service 实现后台服务 - 实现 Windows 服务接口 - 使用定时器进行周期性检查 - 集成事件日志记录功能 - 实现运行时间记录机制,在重启进程时更新最后运行时间到配置文件 ## 注意事项 - 服务需要管理员权限安装和运行 - 某些进程可能因权限限制无法访问或控制 - 配置文件变更会自动被服务检测并应用 - 服务支持通过事件日志进行故障排查 ## 许可证 本项目为开源项目,遵循 MIT 许可证。