Windows 10 封装普通EXE为系统服务
Windows 10 封裝普通EXE為系統服務
Windows服務是指Windows操作系統中的一種運行在后臺的計算機程序。它在概念上類似于Unix/Linux守護進程,一個標準的Windows服務必須匹配服務控制管理器(SCM)(負責管理Windows服務的組件)的接口規則和協議,處理服務控制管理器(SCM)的啟動、停止和暫停消息。
SC
SC.exe 為Windows系統自帶工具,可對Windows系統服務進行創建,查詢,啟動,停止,刪除等操作。
注意: sc.exe 只支持操作服務控制管理器(SCM)接口規范的系統服務. 一般的網絡服務進程如shadowsocks, nginx 等無法作為服務直接啟動,需要用到接下來提到的服務封裝器.
SrvAny.exe
SrvAny.exe為Windows Resource Kit中一個特殊組件。可以作為服務封裝器來處理預期的服務接口(例如處理service_start,然后響應service_started或service_failed)并允許配置任何可執行文件或腳本作為一個服務。
示例
這里以shadowsocks為示例:
Step 1
首先以SrvAny.exe作為封裝器創建一個名為”shadowsocks”系統服務框架, 服務暫時還無法使用, 具體的shadowsocks運行配置稍后通過注冊表詳細配置.
sc create "shadowsocks" binPath=C:\Go\bin\srvany.exe type= own start= auto DisplayName= "shadowsocks"sc query 查詢服務狀態為STOPPED.
sc query shadowsocksSERVICE_NAME: ss_59488TYPE : 10 WIN32_OWN_PROCESSSTATE : 1 STOPPEDWIN32_EXIT_CODE : 0 (0x0)SERVICE_EXIT_CODE : 0 (0x0)CHECKPOINT : 0x0WAIT_HINT : 0x0Step 2
運行regedit, 定位到以下KEY:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\shadowsocks右擊”shadowsocks”項, “新建”->”項”, 創建Parameters子項.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Services\ParametersStep 3
在Parameters子項下添加”shadowsocks”運行配置:
| AppDirectory | REG_SZ | 運行目錄 |
| Application | REG_SZ | 運行exe路徑 |
| AppParameters | REG_SZ | 運行exe參數 |
當服務控制管理器(SCM) 通知SrvAny.exe 封裝器啟動時, SrvAny.exe將查找注冊表以上配置,啟動指定Application .
Step 4
sc start shadowsocks SERVICE_NAME: shadowsocksTYPE : 10 WIN32_OWN_PROCESSSTATE : 2 START_PENDING(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)WIN32_EXIT_CODE : 0 (0x0)SERVICE_EXIT_CODE : 0 (0x0)CHECKPOINT : 0x0WAIT_HINT : 0x7d0PID : 31452FLAGS sc query shadowsocks SERVICE_NAME: shadowsocksTYPE : 10 WIN32_OWN_PROCESSSTATE : 4 RUNNING(STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)WIN32_EXIT_CODE : 0 (0x0)SERVICE_EXIT_CODE : 0 (0x0)CHECKPOINT : 0x0WAIT_HINT : 0x0其他封裝器
SrvStart
https://github.com/rozanski/srvstart
winsw
https://github.com/kohsuke/winsw
NSSM
推薦使用, 只需運行命令即可通過圖形界面完成配置, 具體可訪問 the Non-Sucking Service Manager.
nssm install <servicename>Windows Service Manager (SrvMan)
http://tools.sysprogs.org/srvman/
Resource
Windows Resource Kit
Resource_Kit Wiki
總結
以上是生活随笔為你收集整理的Windows 10 封装普通EXE为系统服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 桌上有一只盘子,每次只能放入一个水果。请
- 下一篇: 如何解决Android机(主要是华为手机