windows后台启动服务

后台启动实现方式主要有两种:第一种是在前端启动,然后将界面隐藏;第二种是将需要后台启动的软件注册为系统服务,然后启动,此种方法比较常用。
下面举例过程中以FRP客户端的后台启动为例进行配置。

方法一:SrvanyUI

下载软件SrvanyUI,然后将需要启动的软件注册为自建服务,当然也可以注册为系统服务或者驱动服务
SrvanyUI

  • 优点:不仅可以注册自定义服务,还可以管理系统自带的服务,比较方便
  • 缺点:需要额外开机自启软件SrvanyUI

方法二:WinSW

  1. github上下载最新的WinSWhttps://github.com/winsw/winsw/releases/【winsw可以运行在.NET2和.NET4两个版本上,当然如果使用Win10等比较新的系统,最好下载更新版本的.NET】
  2. 下载完成后,重命名为winsw.exe,并放在frp相同的目录中
  3. 编写配置文件【在frp相同目录中创建winsw.xml,并加入以下内容(部分自行修改)】
    详细参数请参考https://www.jianshu.com/p/1ee1a8526cc6
<service>
    <!--  指定在Windows系统内部使用的识别服务的ID   -->
    <!--  在系统中安装的所有服务中,这必须是唯一的,它应该完全由字母数字字符组成   -->
    <id>frpc</id>
    <!--  服务的简短名称,它可以包含空格和其他字符  -->
    <!--  尽量简短,就像id一样,在系统的所有服务名称中,也要保持唯一   -->
    <name>frpc</name>
    <!--  该服务可读描述   -->
    <!--  当选中该服务时,它将显示在Windows服务管理器中   -->
    <description>启动内网穿透服务</description>
    <!--  该元素指定要启动的可执行文件 -->
    <!--  可以是绝对路径,也可以指定可执行文件的名称,然后从环境变量PATH中搜索 -->
    <executable>C:\frp\frpc.exe</executable>
    <!--  该元素指定要传递给可执行文件的参数   -->
    <!--  如果有必要,Winsw会给每一个参数外加引号,所以为了避免双重引号,尽量不要在参数中使用引号  -->
    <arguments>-c C:\frp\frpc.ini</arguments>
    <onfailure action="restart" delay="60 sec"/>
    <onfailure action="restart" delay="120 sec"/>
    <logmode>reset</logmode>
</service>
  1. 注册服务。编写好配置文件之后,记得把配置文件和可执行文件放在一起,这样winsw才能正确识别配置文件,然后在当前目录下打开cmd窗口(shift+右键-->选择在此打开命令提示符),然后输入命令winsw install,如果返回值为0,说明已将程序注册为服务。
  2. 使用
# 启动
winsw start   
# 停止
winsw stop 
# 卸载
winsw uninstall           

方法三:NSSM

NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。

  1. 下载http://www.nssm.cc/download
  2. 把下载的nssm文件放入frp客户端目录,然后在当前目录下打开cmd窗口,执行nssm install
  3. 配置如下:(默认开机自启)
    NSSM
  4. 使用
# 创建servername服务
nssm install frpc
# 启动服务
nssm start frpc
# 停止服务
nssm stop frpc
# 重启服务
nssm restart frpc
# 卸载服务
nssm remove frpc