WinSW可以把普通 Windows 程序包装成系统服务,适合让一些命令行程序开机自启。这里以frpc为例,把 FRP 客户端注册为 Windows 服务。

WinSW 下载地址:

下载WinSW-x64.exe后,建议重命名为frpc-service.exe,这样可以和真正的frpc.exe区分开。

目录可以这样放:

C:\frp
├── frpc.exe
├── frpc.toml
├── frpc-service.exe
└── frpc-service.xml

frpc.toml示例:

serverAddr = "1.2.3.4"
serverPort = 5031
auth.token = "password"

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

新建frpc-service.xml

<service>
  <id>frpc</id>
  <name>frpc</name>
  <description>Frpc Service</description>
  <executable>%BASE%\frpc.exe</executable>
  <onfailure action="restart" delay="10 sec"/>
  <arguments>-c frpc.toml</arguments>
  <startmode>Automatic</startmode>
  <log mode="none"></log>
</service>

其中%BASE%表示 WinSW 程序所在目录,也就是C:\frpexecutable指定真正要运行的程序,这里是frpc.exearguments表示启动参数,-c frpc.toml表示使用同目录下的frpc.toml配置文件。

以管理员身份打开 CMD,进入目录:

cd /d C:\frp

安装服务:

frpc-service.exe install

启动服务:

frpc-service.exe start

查看状态:

frpc-service.exe status

重启服务:

frpc-service.exe restart

停止服务:

frpc-service.exe stop

卸载服务:

frpc-service.exe uninstall

如果修改了frpc-service.xml,可以执行:

frpc-service.exe refresh

如果只是修改frpc.toml,一般重启服务即可:

frpc-service.exe restart

服务启动失败时,可以先在 CMD 中手动运行一次:

frpc.exe -c frpc.toml

如果手动运行也失败,优先检查serverAddrserverPortauth.token和防火墙。确认手动运行正常后,再交给 WinSW 托管。