# WinProcMan **Repository Path**: vipkwds/WinProcMan ## Basic Information - **Project Name**: WinProcMan - **Description**: 一款可视化、高扩展性的 Windows 平台通用 EXE 进程 / 服务管理工具,集成**进程监控、自恢复、日志管理、性能监控、远程管理、告警通知、批量操作**全能力,基于 NSSM 实现底层服务化管理,通过 Wails 桥接 Go 后端与 Vue3 前端实现现代化图形化界面 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-22 - **Last Updated**: 2026-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WinProcMan 一款可视化、高扩展性的 Windows 平台通用 EXE 进程/服务管理工具。 ## 功能特性 - **服务管理** - 基于 NSSM 的 Windows 服务安装/启停/配置 - **进程监控** - 实时监控系统进程状态和资源占用 - **自恢复** - 服务异常退出自动重启,支持自定义延迟和重试次数 - **性能监控** - CPU、内存、网络等系统资源监控 - **远程管理** - 支持管理多台远程 Windows 主机 - **告警通知** - 邮件、钉钉等告警通道 - **批量操作** - 批量启停多个服务 - **开机自启** - 支持普通用户和管理员权限两种模式 ## 技术栈 - **后端**: Go + Wails v2 - **前端**: Vue3 + TypeScript + Element Plus - **服务管理**: NSSM (Non-Sucking Service Manager) - **系统监控**: gopsutil - **注册表操作**: golang.org/x/sys/windows/registry ## 项目结构 ``` exe-manager/ ├── main.go # 程序入口,隐藏控制台 ├── app.go # 主应用逻辑,所有 API ├── build.js # 构建脚本(版本管理、tag 发布) ├── wails.json # Wails 配置 ├── go.mod / go.sum # Go 依赖 ├── package.json # npm scripts(版本信息来源) ├── backend/ │ ├── nssm/ # NSSM 封装(服务安装/启停/状态查询) │ ├── config/ # 配置管理 │ ├── monitor/ # 系统监控 │ ├── alert/ # 告警管理 │ ├── batch/ # 批量操作 │ ├── remote/ # 远程管理 │ ├── log/ # 日志管理 │ ├── system/ # 系统工具(托盘、自启等) │ ├── env/ # 环境检测 │ └── version/ # 版本信息(编译时生成) ├── frontend/src/ │ ├── App.vue # 主页面 │ └── components/ # 功能组件 └── res/nssm/ # NSSM 源文件(构建时嵌入) ``` ## 环境要求 - **Go**: 1.21+ - **Node.js**: 18+ - **Wails CLI**: v2.11.0 - **gcc** (可选,用于 CGO) ## 安装开发环境 ### 1. 安装 Go 从 https://go.dev/dl/ 下载并安装 Go 1.21 或更高版本。 ```bash go version # 验证安装 ``` ### 2. 安装 Node.js 从 https://nodejs.org/ 下载并安装 Node.js 18 或更高版本。 ```bash node -v # 验证安装 npm -v # 验证安装 ``` ### 3. 安装 Wails CLI ```bash go install github.com/wailsapp/wails/v2/cmd/wails@latest wails doctor # 验证安装并检查环境 ``` ### 4. 安装 GCC (可选) Wails 在 Windows 上需要 GCC 来编译 CGO 代码。 - **MinGW-w64**: https://www.mingw-w64.org/ 或 - 直接安装 [MSYS2](https://www.msys2.org/) 后运行 `pacman -S gcc` ```bash gcc --version # 验证安装 ``` ### 5. 安装项目依赖 ```bash # 克隆项目 git clone https://gitee.com/vipkwds/WinProcMan.git cd WinProcMan # 安装前端依赖 npm install # 下载 Go 依赖 go mod download ``` ## 构建命令 ```bash # 开发模式(热重载) npm run dev # 生产构建(生成 exe) npm run build # 生产构建 + NSIS 安装器 npm run build:installer # 发布版本构建(自动 tag + 推送) npm run build:tag npm run build:tag -- v1.0.1 # 指定版本号 npm run build:tag -- v1.0.1 --force # 强制执行(跳过确认) npm run build:tag -- v1.0.1 -y # 同上 # 注意:-y / --force 都是 npm 自身的标志,必须用 `--` 分隔符 # 让 npm 把后续参数原样转发给脚本,否则会被 npm 吞掉。 ``` ## 版本管理 ### 单一版本来源 版本号仅在 `package.json` 中管理,构建时自动同步到其他配置文件: | package.json | → | wails.json | |-------------|---|------------| | `version` | → | `version`, `info.productVersion` | | `name` | → | `name`, `outputfilename`, `info.productName` | | `author.name` | → | `author.name`, `info.companyName` | | `author.email` | → | `author.email` | | `description` | → | `info.comments` | | `copyright` | → | `info.copyright` | ### 发布版本工作流 ```bash # 1. 修改 package.json 中的 version 字段 # 2. 执行发布构建 npm run build:tag # 自动流程: # 1. 更新 package.json 版本 # 2. 同步版本到 wails.json # 3. git add . (所有更改) # 4. git commit # 5. git push # 6. git tag vX.X.X # 7. git push --tags ``` ### 版本号校验 - 指定版本必须 >= package.json 当前版本 - 使用 `--force` 或 `-y` 可跳过校验和确认 ### Tag 冲突处理 | 情况 | 不带 --force | 带 --force/-y | |-----|-------------|---------------| | tag 本地远程都不存在 | 创建并推送 | 同左 | | tag 本地有远程无 | 退出 | 推送到远程 | | tag 本地无远程有 | 退出 | 拉取到本地 | | tag 本地远程都有 | 退出 | 删除重建 | ## 构建说明 ### NSSM 资源处理 NSSM 可执行文件在构建时通过 `//go:embed` 嵌入到程序中: 1. `build.js` 在构建前将 `res/nssm/win64/nssm.exe` 和 `res/nssm/win32/nssm.exe` 复制到 `backend/nssm/` 2. Go 编译时通过 `//go:embed` 指令将 NSSM 嵌入最终 exe 3. 程序运行时自动提取到临时目录使用 ### 版本信息 版本信息在构建时自动生成到 `backend/version/version.go`: - App 版本 - 来自 package.json - Go 版本 - 来自 `go version` - Node.js 版本 - 来自 `node -v` - npm 版本 - 来自 `npm -v` - Wails 版本 - 固定为 v2.11.0 ### Dev vs Prod 模式 | 特性 | Dev 模式 | Prod 模式 | |------|---------|----------| | 日志输出 | 控制台 + 日志文件 | 仅日志文件 | | 控制台窗口 | 显示 | 隐藏 | | NSSM 嵌入 | 是 | 是 | | manifest | asInvoker | requireAdministrator | ## 使用说明 ### 安装服务 1. 点击"添加服务" 2. 选择要管理的 EXE 程序路径 3. 设置服务名称、显示名称,工作目录等 4. 点击"安装" ### 启动/停止服务 - 在服务列表中选择服务 - 点击"启动"/"停止"/"重启"按钮 - 支持批量操作 ### 远程管理 1. 在"远程管理"中添加远程节点(IP、用户名、密码) 2. 可以管理远程节点上的服务 ### 告警配置 1. 在"告警中心"配置告警通道(邮件/钉钉) 2. 设置监控规则和告警条件 3. 启用告警后,异常情况会自动通知 ## 常见问题 ### Q: 服务进程在任务管理器中不显示为 NSSM 子进程? 这是正常的。NSSM 创建的服务的进程关系与普通子进程不同,服务进程直接由 Windows 服务管理器管理。 ### Q: 需要管理员权限吗? - **管理进程**: 普通用户权限即可 - **管理服务**: 需要管理员权限 - **安装服务**: 需要管理员权限 如果需要程序自动请求管理员权限,可以在编译时使用管理员权限的 manifest 文件(项目已提供 `build/windows/wails-prod.exe.manifest`)。 ### Q: 开发模式下 wails dev 无法启动? 1. 确保已正确安装 Wails CLI: `wails doctor` 2. 确保前端依赖已安装: `npm install` 3. 以管理员身份运行命令行后执行 `npm run dev` ### Q: 构建失败,提示找不到 nssm.exe? 确保 `res/nssm/win64/nssm.exe` 和 `res/nssm/win32/nssm.exe` 文件存在。如需要,可从 https://nssm.cc/ 下载。 ## 参与贡献 1. Fork 本仓库 2. 新建 Feature 分支 3. 提交代码 4. 创建 Pull Request ## 开源协议 MIT License