Windows 10 封装普通EXE为系统服务
Windows 10 封裝普通EXE為系統(tǒng)服務(wù)
Windows服務(wù)是指Windows操作系統(tǒng)中的一種運(yùn)行在后臺(tái)的計(jì)算機(jī)程序。它在概念上類似于Unix/Linux守護(hù)進(jìn)程,一個(gè)標(biāo)準(zhǔn)的Windows服務(wù)必須匹配服務(wù)控制管理器(SCM)(負(fù)責(zé)管理Windows服務(wù)的組件)的接口規(guī)則和協(xié)議,處理服務(wù)控制管理器(SCM)的啟動(dòng)、停止和暫停消息。
SC
SC.exe 為Windows系統(tǒng)自帶工具,可對(duì)Windows系統(tǒng)服務(wù)進(jìn)行創(chuàng)建,查詢,啟動(dòng),停止,刪除等操作。
注意: sc.exe 只支持操作服務(wù)控制管理器(SCM)接口規(guī)范的系統(tǒng)服務(wù). 一般的網(wǎng)絡(luò)服務(wù)進(jìn)程如shadowsocks, nginx 等無(wú)法作為服務(wù)直接啟動(dòng),需要用到接下來(lái)提到的服務(wù)封裝器.
SrvAny.exe
SrvAny.exe為Windows Resource Kit中一個(gè)特殊組件。可以作為服務(wù)封裝器來(lái)處理預(yù)期的服務(wù)接口(例如處理service_start,然后響應(yīng)service_started或service_failed)并允許配置任何可執(zhí)行文件或腳本作為一個(gè)服務(wù)。
示例
這里以shadowsocks為示例:
Step 1
首先以SrvAny.exe作為封裝器創(chuàng)建一個(gè)名為”shadowsocks”系統(tǒng)服務(wù)框架, 服務(wù)暫時(shí)還無(wú)法使用, 具體的shadowsocks運(yùn)行配置稍后通過(guò)注冊(cè)表詳細(xì)配置.
sc create "shadowsocks" binPath=C:\Go\bin\srvany.exe type= own start= auto DisplayName= "shadowsocks"sc query 查詢服務(wù)狀態(tài)為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
運(yùn)行regedit, 定位到以下KEY:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\shadowsocks右擊”shadowsocks”項(xiàng), “新建”->”項(xiàng)”, 創(chuàng)建Parameters子項(xiàng).
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Services\ParametersStep 3
在Parameters子項(xiàng)下添加”shadowsocks”運(yùn)行配置:
| AppDirectory | REG_SZ | 運(yùn)行目錄 |
| Application | REG_SZ | 運(yùn)行exe路徑 |
| AppParameters | REG_SZ | 運(yùn)行exe參數(shù) |
當(dāng)服務(wù)控制管理器(SCM) 通知SrvAny.exe 封裝器啟動(dòng)時(shí), SrvAny.exe將查找注冊(cè)表以上配置,啟動(dòng)指定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
推薦使用, 只需運(yùn)行命令即可通過(guò)圖形界面完成配置, 具體可訪問(wèn) the Non-Sucking Service Manager.
nssm install <servicename>Windows Service Manager (SrvMan)
http://tools.sysprogs.org/srvman/
Resource
Windows Resource Kit
Resource_Kit Wiki
總結(jié)
以上是生活随笔為你收集整理的Windows 10 封装普通EXE为系统服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 桌上有一只盘子,每次只能放入一个水果。请
- 下一篇: 如何解决Android机(主要是华为手机