使用场景:比如我们想把一个好用的应用设置为自启动,但是程序本身不支持或者只能在命令行执行就可以使用本教程方式
缘由
Frp内网穿透每次都要手动运行或者用一键脚本,电脑重启又不能自启动,所以用此办法将frp注册成服务,每次开机自动连接
步骤
下载所需包:
WinSW:将任何应用程序包装和管理为Windows服务。
官方地址:https://github.com/winsw/winsw
编写服务相关配置
创建 winsw.xml
文件,编写自定义配置
例如frps服务端配置:
<service>
<!-- 该服务的唯一标识 -->
<id>frps</id>
<!-- 该服务的名称 -->
<name>frps0.33-server</name>
<!-- 该服务的描述 -->
<description>frpc服务端 这个服务用 frpc 实现内网穿透</description>
<!-- 要运行的程序路径 -->
<executable>E:\桌面\frp_0.33.0_服务端\frp_0.33.0_windows_amd64\frps.exe</executable>
<!-- 携带的参数 -->
<arguments>-c frps.ini</arguments>
<!-- 第一次启动失败 60秒重启 -->
<onfailure action="restart" delay="60 sec"/>
<!-- 第二次启动失败 120秒后重启 -->
<onfailure action="restart" delay="120 sec"/>
<!-- 日志模式 -->
<logmode>append</logmode>
<!-- 指定日志文件目录(相对于executable配置的路径) -->
<logpath>logs</logpath>
</service>
使用winsw命令注册成服务
//注册服务
winsw.exe install
//卸载服务
winsw.exe uninstall
//启动服务
winsw.exe start
//停止服务
winsw.exe stop
//重启服务
winsw.exe restart
//查看状态
winsw.exe status
命令行执行后提示有 successful
关键字 ,依次点击->右击桌面此电脑 - 管理 - 服务和应用程序 - 服务 - 在列表中即可找到 frps0.33-server 的服务,可以手动重启、停止等。
常见问题
1、执行注册服务乱码?
答:重新新建 winsw.xml
文件,使用编辑器工具进行编写,编码格式要windows自带的编码。
2、提示没有权限?
答:需要你使用管理员身份运行命令行执行。
3、开机自动启动失败?
答:检查在服务里面服务是否是自动状态,并且保证你自启动的命令所在的文件都没有被删除或者移动。
4、执行后提示安装NET Framework ?
答:是的,windows默认会自带低版本NET Framework 框架,如提示没有按照提示安装一下即可。
参考链接
https://github.com/winsw/winsw
https://blog.csdn.net/atmosphere_/article/details/104018900