---
title: EasyService - 让程序以 Windows 系统服务的方式，无窗口运行
date: 2019-11-14T07:07:05Z
modified: 2019-11-14T11:00:34Z
permalink: "https://www.appinn.com/easyservice-for-windows/"
type: post
status: publish
excerpt: ""
categories:
  - Windows
  - 电脑技巧
tags:
  - Windows
  - 电脑技巧
  - cmd
  - frp
  - 系统服务
featured_image: "https://www.appinn.com/wp-content/uploads/2019/11/easyservice.jpgo_.jpg"
author: 青小蛙
timestamp: 2019-11-14T11:00:34Z
---

[EasyService](https://www.appinn.com/easyservice-for-windows.md) 是一个只有 16KB 的小程序，它可以让需要长时间运行的 Windows 程序，以系统服务的方式，**无窗口后台运行**。典型的应用，比如命令行内网穿透 frp 工具、各种 Nodejs、Python 小工具。@Appinn

![](https://static2.appinn.com/images/201911/easyservice.jpg)

有很多没有图形界面的程序，会使用 Windows 下的命令提示符界面，看起来…丑丑的，以及很碍事。

而 Windows 并没有一个很方便的后台运行方式，于是，利用系统服务来运行一些程序，就是一种非常优雅的使用方式了。

比如之前小众软件写过的免费开源内网穿透工具 [frp](https://www.appinn.com/frp.md) 教程。frp 可以让你在不考虑公网 IP 的情况下， 随时从外连接回家，使用 NAS、远程桌面等服务，但 frp 会在桌面留下一个命令提示符。

![](https://static2.appinn.com/images/201908/2019-08-254-15-40.jpg)

> 注意使用 frp 的前提意，需要一个公网 IP 作为中转节点。这个节点可以是拥有固定公网 IP 的任意电脑，也可以自配一台 VPS，青小蛙依旧推荐 [Vultr](https://www.vultr.com/?ref=7872434-4F) 的机器，便宜好用，控制面板简单。可以另外通过青小蛙的[推荐链接注册](https://www.vultr.com/?ref=7872434-4F)（👈有返利），还送 50 刀体验金，仅限新用户。Vultr 推荐美国、德国的机器。
> 
> 如果不嫌麻烦，也可以试试腾讯云的特价服务器，一年只需要 88 元，（[推荐注册地址](https://cloud.tencent.com/act/cps/redirect?redirect=1050&cps_key=beb8766b3b68e1aa5cc2ded0ed1ccf15&from=console) 👈 有返利），优点肯定是连接响应速度快了，但带宽略小。

现在，我们就用 EasyService 把这个命令提示符窗口隐藏起来，让它在后台运行。

## EasyService 教程

假设你已经看过 [frp 教程](https://www.appinn.com/frp.md)，并成功设置了服务器与客户端。下面就用 EasyService 将 frp 的 Windows 客户端窗口隐藏起来。

### 配置文件

1. 下载解压缩 [EasyService](https://github.com/pandolia/easy-service/archive/master.zip)（19.8KB）
2. 将 frp 客户端放到 EasyService 文件夹
3. 编辑 `svc.conf` 文件：


ServiceName: Frp Service
Worker: frpc.exe -c frpc.ini
WorkingDir: frp
OutFileDir: outfiles
WorkerEncoding: utf8


确保此时的 EasyService 文件夹有以下的几个文件和文件夹：

- frp 文件夹（包含配置文件）
- svc.conf
- svc.exe

![](https://static2.appinn.com/images/201911/019-11-1414-49-44.jpg)

### 测试配置文件

然后，在 EasyService 文件夹的地址栏，直接输入 `cmd` 打开当前文件夹的命令提示符，输入测试命令：


svc.exe check
svc.exe test-worker


如果能看到下面的提示，就证明测试成功，没有问题了。

![](https://static2.appinn.com/images/201911/019-11-1414-53-59.jpg)

### 安装系统服务

此时需要使用管理员权限的命令提示符（在开始菜单中搜索 cmd 然后右键以管理员身份运行）。切换至 EasyService 目录（上图为例 C:\\TOOLS\\easy-service-master）：


cd C:\TOOLS\easy-service-master
svc.exe install


![](https://static2.appinn.com/images/201911/019-11-1415-01-47.jpg)

启动系统服务之后，frp 就已经开始运行了，即便用户注销也不会停止运行，且系统开机后、用户登录之前就会自动运行。在服务管理控制台中可以查看已注册的服务。

### 重启、停止、删除系统服务

只需要运行以下命令，即可：

- svc stop 停止
- svc start 开始
- svc estart 重启
- svc remove 删除

然后，就可以愉快的使用 frp 并且看不见那个烦人的窗口了。EasyService 在 [GitHub](https://github.com/pandolia/easy-service) 开源。

## EasyService 原理

EasyService 实质是将自己（svc.exe）注册为一个系统服务，此服务启动时，会读取 svc.conf 中的配置，创建一个子进程运行 Worker 中指定的程序及命令行参数，之后，监视该子进程，如果发现子进程停止运行，会重新启动一个子进程。而当此服务停止时，会向子进程的标准输入中写入数据 “exit” ，并等待子进程退出，如果等待时间超过 10 秒，则直接终止子进程。

多个服务需要运行多个 EasyService。

## 其他的选择

青小蛙在几个月前还写过一篇通过 nssm 工具实现同样效果的教程：

![](https://static2.appinn.com/meta/uploads/default/original/2X/9/9b7bd1f2a47e28feffd4ce820a74dc5b77f44a5e.jpeg)

 详见这里：[https://meta.appinn.net/t/frp/11319/3](https://meta.appinn.net/t/frp/11319/3)

## Topics

**分类目录:** [Windows](https://www.appinn.com/category/windows/?output_format=md), [电脑技巧](https://www.appinn.com/category/pcskill/?output_format=md)

**标签:** [cmd](https://www.appinn.com/tag/cmd/?output_format=md), [frp](https://www.appinn.com/tag/frp/?output_format=md), [系统服务](https://www.appinn.com/tag/%e7%b3%bb%e7%bb%9f%e6%9c%8d%e5%8a%a1/?output_format=md)