使用 net start、net stop 可以啟動跟關閉服務。但若是要進一步管理服務,net start、net stop 就無用武之地了。
此時,就要派 sc.exe 上場。
我把常用的幾個列出來:
sc config 設定服務的啟動參數
sc query 查詢服務的狀態
sc qc 查詢服務的設定資訊
sc start 啟動服務
sc stop 停用服務
sc pause 暫停服務
sc continue 繼續服務
接下來依序用範例來說明,首先是 sc config 設定服務的啟動參數。
語法:
sc config <服務名稱> start= <啟動類型>
<服務名稱> 跟顯示名稱是不一樣的,例如 IIS 的服務名稱是 W3SVC,而顯示的名稱是 World Wide Web Publishing Service。
<啟動類型> 有:
auto
demand
disable
依序代表自動、手動、停用。要請各位看官特別注意啊!= 與 <啟動類型> 之間,要記得空一個空格,不然指令是不會生效的啊!
例如下面的指令會把 W3SVC 設定成自動啟動:
sc config W3SVC start= auto
下面的指令會把 W3SVC 服務的登入身份設定成 LocalSystem:
sc config W3SVC obj= LocalSystem
下面的指令會查詢所有服務的狀態:
sc query type= service state= all
執行結果:
SERVICE_NAME: AppHostSvc
DISPLAY_NAME: Application Host Helper Service
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
...
不過這樣出來的結果會包含一些不必要的資訊,所以搭配 find 指令來過濾:
sc query type= service state= all | find /v "x0"
SERVICE_NAME: AppHostSvc
DISPLAY_NAME: Application Host Helper Service
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
...
下面的指令會查詢 W3SVC 服務的設定資訊:
sc qc W3SVC
執行結果:
[SC] QueryServiceConfig 成功
SERVICE_NAME: W3SVC
TYPE : 20 WIN32_SHARE_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:\Windows\system32\svchost.exe -k iissvcs
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : World Wide Web Publishing Service
DEPENDENCIES : WAS
: HTTP
SERVICE_START_NAME : LocalSystem
啟動、停用、暫停、繼續服務的使用方式一樣,例如下面的指令會停用 W3SVC:
sc stop W3SVC