查看現有的 service,可在 windows 開啟 services.msc
。
在 Command Prompt 中可以透過 sc (Service Control) 來建立 windows service。
> sc create
描述:
在登錄和服務資料庫中建立服務項目。
使用方法:
sc <server> create [service name] [binPath= ] <option1> <option2>...
選項:
注意: 選項名稱包括等號。
在等號和值之間必須空一格。
type= <own|share|interact|kernel|filesys|rec|userown|usershare>
(預設值 = own)
start= <boot|system|auto|demand|disabled|delayed-auto>
(預設值 = demand)
error= <normal|severe|critical|ignore>
(預設值 = normal)
binPath= <.exe 檔案的二進位檔案路徑名稱>
group= <載入順序群組>
tag= <yes|no>
depend= <相依性(以 / (反斜線) 隔開)>
obj= <帳戶名稱|物件名稱>
(預設值 = LocalSystem)
DisplayName= <顯示名稱>
password= <密碼>
範例,以系統管理員開啟 Command Prompt:
>sc create TestService binpath= "C:\\\\Path\\\\TestProgram.exe" type= own start= auto
[SC] CreateService 成功
建立完成之後可以看到成功訊息,接著使用 query 查詢目前 service 的狀態,剛建立好的 service 狀態會是 STOPPED (1)
>sc query testservice
SERVICE_NAME: testservice
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 1077 (0x435)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
接著可以透過 start 指令來啟動服務,要啟動時狀態為 START_PENDING (2)
>sc start testservice
SERVICE_NAME: testservice
TYPE : 10 WIN32_OWN_PROCESS
STATE : 2 START_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x7d0
PID : 26300
FLAGS :
當正常執行,狀態就會更新為 RUN (4)
SERVICE_NAME: testservice
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
要停止服務可以透過 stop 指令,執行完指令會進行停止的動作,因此查看當下狀態會是 STOP_PENDING,當停止完畢後再次查詢可以看到狀態改為 STOPPED (1)
>sc stop testservice
SERVICE_NAME: testservice
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
>sc query testservice
SERVICE_NAME: testservice
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
要刪除服務使用 delete 指令,騎回傳訊息與 create 指令類似,直接回傳刪除服務成功。
sc delete ServiceName
[SC] DeleteService 成功