EasyService 是一个只有 16KB 的小程序,它可以让需要长时间运行的 Windows 程序,以系统服务的方式,无窗口后台运行。典型的应用,比如命令行内网穿透 frp 工具、各种 Nodejs、Python 小工具。@Appinn
有很多没有图形界面的程序,会使用 Windows 下的命令提示符界面,看起来…丑丑的,以及很碍事。
而 Windows 并没有一个很方便的后台运行方式,于是,利用系统服务来运行一些程序,就是一种非常优雅的使用方式了。
比如之前小众软件写过的免费开源内网穿透工具 frp 教程。frp 可以让你在不考虑公网 IP 的情况下, 随时从外连接回家,使用 NAS、远程桌面等服务,但 frp 会在桌面留下一个命令提示符。
注意使用 frp 的前提意,需要一个公网 IP 作为中转节点。这个节点可以是拥有固定公网 IP 的任意电脑,也可以自配一台 VPS,青小蛙依旧推荐 Vultr 的机器,便宜好用,控制面板简单。可以另外通过青小蛙的推荐链接注册(?有返利),还送 50 刀体验金,仅限新用户。Vultr 推荐美国、德国的机器。
如果不嫌麻烦,也可以试试腾讯云的特价服务器,一年只需要 88 元,(推荐注册地址 ? 有返利),优点肯定是连接响应速度快了,但带宽略小。
现在,我们就用 EasyService 把这个命令提示符窗口隐藏起来,让它在后台运行。
EasyService 教程
假设你已经看过 frp 教程,并成功设置了服务器与客户端。下面就用 EasyService 将 frp 的 Windows 客户端窗口隐藏起来。
配置文件
- 下载解压缩 EasyService(19.8KB)
- 将 frp 客户端放到 EasyService 文件夹
- 编辑
svc.conf
文件:
ServiceName: Frp Service
Worker: frpc.exe -c frpc.ini
WorkingDir: frp
OutFileDir: outfiles
WorkerEncoding: utf8
确保此时的 EasyService 文件夹有以下的几个文件和文件夹:
- frp 文件夹(包含配置文件)
- svc.conf
- svc.exe
测试配置文件
然后,在 EasyService 文件夹的地址栏,直接输入 cmd
打开当前文件夹的命令提示符,输入测试命令:
svc.exe check
svc.exe test-worker
如果能看到下面的提示,就证明测试成功,没有问题了。
安装系统服务
此时需要使用管理员权限的命令提示符(在开始菜单中搜索 cmd 然后右键以管理员身份运行)。切换至 EasyService 目录(上图为例 C:/TOOLS/easy-service-master):
cd C:/TOOLS/easy-service-master
svc.exe install
启动系统服务之后,frp 就已经开始运行了,即便用户注销也不会停止运行,且系统开机后、用户登录之前就会自动运行。在服务管理控制台中可以查看已注册的服务。
重启、停止、删除系统服务
只需要运行以下命令,即可:
- svc stop 停止
- svc start 开始
- svc estart 重启
- svc remove 删除
然后,就可以愉快的使用 frp 并且看不见那个烦人的窗口了。EasyService 在 GitHub 开源。
EasyService 原理
EasyService 实质是将自己(svc.exe)注册为一个系统服务,此服务启动时,会读取 svc.conf 中的配置,创建一个子进程运行 Worker 中指定的程序及命令行参数,之后,监视该子进程,如果发现子进程停止运行,会重新启动一个子进程。而当此服务停止时,会向子进程的标准输入中写入数据 “exit” ,并等待子进程退出,如果等待时间超过 10 秒,则直接终止子进程。
多个服务需要运行多个 EasyService。
其他的选择
青小蛙在几个月前还写过一篇通过 nssm 工具实现同样效果的教程:
详见这里:https://meta.appinn.net/t/frp/11319/3
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/166186.html