利用用WinSW将exe程序注册为系统服务
适用场景:将任意 Windows 可执行程序(exe、jar、bat、python 脚本等)注册为系统后台服务,实现开机自启、异常重启、后台静默运行,无需手动登录启动程序。
文档用途:个人学习留存、快速查阅 WinSW 安装配置、命令操作、问题排查,适配所有 Windows 服务器/个人电脑。
WinSW 简介:WinSW 是一款开源的 Windows 服务包装工具,可将普通应用程序封装为 Windows 原生服务,完美解决程序后台运行、开机自启、崩溃自愈需求,轻量无依赖、配置简单、稳定性高。
一、环境准备
系统要求:Windows 10 / Windows 11 / Windows Server 2016+
运行依赖:.NET Framework 4.8(大部分Windows系统自带,缺失可微软官网免费安装)
权限要求:所有操作必须以 管理员身份运行 CMD / PowerShell
二、WinSW 下载与安装
2.1 官方下载地址
GitHub 官方 Releases:https://github\.com/winsw/winsw/releases
版本选择规则:
64位系统:下载
WinSW-x64.exe32位系统:下载
WinSW-x86.exe通用极简版:优先选择最新稳定版
2.2 目录部署(固定规范)
为方便管理,建议统一程序目录,目录全程无中文、无空格(避免报错)。
示例部署目录:D:\Software\WinSW\
将下载的
WinSW-x64.exe放入上述目录重命名文件(核心规范):将
WinSW-x64.exe重命名为service.exe在同目录新建 同名配置文件:
service.xml(必须和exe文件名一致)
最终目录文件结构:
1 | D:\Software\WinSW\ |
三、核心配置文件(service.xml)详解
配置文件是 WinSW 核心,所有服务运行规则均在此配置,以下为通用万能模板,可直接修改使用。
3.1 基础通用配置模板
1 | <service> |
3.2 关键参数说明(必看)
| 参数节点 | 作用说明 | 填写规范 |
|---|---|---|
| id | 服务唯一标识 | 英文无空格,系统唯一,不可重复 |
| name | 服务显示名称 | 服务列表展示的名称,可中文 |
| description | 服务描述 | 备注服务用途,方便识别 |
| executable | 要托管的程序路径 | 绝对路径,无中文空格,exe/jar/bat等 |
| arguments | 程序启动参数 | 无参数则留空,有参数直接填写 |
| workingdirectory | 程序运行根目录 | 填写程序所在文件夹绝对路径 |
| startservice | 开机启动方式 | auto开机自启,manual手动启动 |
| onfailure | 崩溃重启规则 | delay重启延迟,推荐10秒 |
| logpath | 日志保存目录 | 自动生成运行日志、错误日志 |
| logmode | 日志切割模式 | rotate自动轮转,避免日志过大 |
3.3 特殊场景适配配置
场景1:托管 Java Jar 程序
1 | <executable>java</executable> |
场景2:托管 Python 脚本
1 | <executable>python</executable> |
场景3:托管 Bat 批处理文件
1 | <executable>cmd</executable> |
四、WinSW 核心命令大全(管理员终端执行)
先 CD 切换到 WinSW 所在目录:cd D:\Software\WinSW\
4.1 基础服务操作命令
安装服务:
service install启动服务:
service start停止服务:
service stop重启服务:
service restart查看服务状态:
service status卸载服务:
service uninstall刷新配置(修改xml后生效):
service refresh
4.2 辅助命令
查看帮助:
service help校验配置文件是否正确:
service verify
五、完整实战部署流程
以部署任意自定义程序为例,完整步骤如下:
整理程序目录,确保路径无中文、无空格、无特殊符号
部署并重命名 WinSW 程序,编写完善 service.xml 配置文件
管理员身份打开 CMD,CD 进入 WinSW 目录
执行校验命令,排查配置错误:
service verify安装服务:
service install启动服务:
service start查看运行状态:
service status验证:打开 Windows 服务列表,确认服务正常运行
六、Windows 服务列表查看方式
快捷键 Win + R,输入 services.msc 回车,即可打开系统服务面板,可查看、启停、设置服务启动类型。
七、常见报错与问题排查
7.1 服务启动失败、报错1053
原因:程序路径错误、配置文件格式错误、路径含中文/空格、权限不足
解决方案:
全程使用管理员终端操作
检查 xml 配置文件路径绝对正确,无中文空格
执行
service verify校验配置语法手动运行一次目标程序,确认程序本身可正常启动
7.2 服务安装成功但无法启动
解决方案:查看 logs 日志目录下的错误日志,根据日志报错精准定位问题(端口占用、参数错误、文件缺失等)。
7.3 修改配置后不生效
必须执行刷新命令:service refresh,重启服务即可生效。
7.4 卸载服务提示服务正在运行
先执行 service stop 停止服务,再执行 service uninstall 卸载。
八、最佳实践与注意事项
目录规范:所有相关目录、文件名称禁止中文、空格、特殊符号,避免90%的报错
权限规范:所有命令操作必须管理员身份运行,否则安装/启动失败
配置规范:exe与xml文件名必须完全一致,同目录存放
日志规范:固定日志目录,方便后续问题排查,定期清理日志
更新程序:更新目标程序后,无需重装服务,重启服务即可
多服务部署:多个服务需新建独立文件夹,单独配置xml,服务id不可重复
九、版本更新记录
2025-09-30:整理完整版教程,包含基础配置、多场景适配、命令大全、问题排查,个人长期留存使用
(注:部分内容由豆包工作 AI 生成)
我的配置:
一直使用linux,在配置服务时习惯了systemd进行配置,转入windows时,想办法解决,找到WinSW。我配置frp和WebDav的配置
1.Frpc
1 | C:\Program Files\frpc |
将winsw.exe、winsw.xml放入程序目录,配置winsw.xml
1 | <service> |
踩坑的地方:”C:\Program Files\frpc\frpc.exe”和”C:\Program Files\frpc\frpc.exe”,因为有空格,所以要用引号引导起来,不然启动不了。
1 | winsw.exe install #注册服务 |
2.WebDav
1 | C:\Program Files\webdav |
将winsw.exe、winsw.xml放入程序目录,配置winsw.xml
1 | <service> |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com