最討厭那個黑乎乎的窗口
有很多沒有圖形界面的程序,會使用 Windows 下的命令提示符界面,看起來…醜醜的,以及很礙事。
而 Windows 並沒有一個很方便的後臺運行方式,於是,利用一些技巧,比如系統服務來運行一些程序,就是一種非常優雅的使用方式了。
之前小衆軟件寫過的用來替代 Teamviewer,免費開源內網穿透工具 frp 教程。frp 可以讓你在不考慮公網 IP 的情況下, 隨時從外連接回家,使用 NAS、遠程桌面等服務,但 frp 會在桌面留下一個命令提示符。

怎麼辦?用下面這貨解決問題:
EasyService是一個只有 16KB 的小程序,它可以讓需要長時間運行的 Windows 程序,以系統服務的方式,無窗口後臺運行。典型的應用,比如命令行內網穿透 frp 工具、各種 Nodejs、Python 小工具。@Appinn
EasyService 教程
假設你已經看過frp 教程,併成功設置了服務器與客戶端。下面就用 EasyService 將 frp 的 Windows 客戶端窗口隱藏起來。
配置文件
下載解壓縮EasyService(19.8KB)
將 frp 客戶端放到 EasyService 文件夾
編輯
svc.conf
文件:
1 2 3 4 5 | ServiceName: Frp Service Worker: frpc.exe -c frpc.ini WorkingDir: frp OutFileDir: outfiles WorkerEncoding: utf8 |
確保此時的 EasyService 文件夾有以下的幾個文件和文件夾:
frp 文件夾(包含配置文件)
svc.conf
svc.exe

測試配置文件
然後,在 EasyService 文件夾的地址欄,直接輸入cmd
打開當前文件夾的命令提示符,輸入測試命令:
1 2 | svc.exe check scv.exe test-worker |
如果能看到下面的提示,就證明測試成功,沒有問題了。

安裝系統服務
此時需要使用管理員權限的命令提示符(在開始菜單中搜索 cmd 然後右鍵以管理員身份運行)。切換至 EasyService 目錄(上圖爲例 C:\TOOLS\easy-service-master):
1 2 | 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 秒,則直接終止子進程。