SC命令建立和刪除windows服務
命令格式:
sc [servername] create Servicename [Optionname= Optionvalues]
servername
可選,可以使用雙斜線,如\\\\myserver,也可以是\\\\192.168.0.1來操作遠端計算機。如果在本地計算機上操作就不用新增任何引數。
Servicename
在登錄檔中為service key制定的名稱。注意這個名稱是不同於顯示名稱的(這個名稱可以用net start和服務控制面板看到),而SC是使用服務鍵名來鑑別服務的。
Optionname
這個optionname和optionvalues引數允許你指定操作命令引數的名稱和數值。注意,這一點很重要在操作名稱和等號之間是沒有空格的。
如果你想要看每個命令的可以用的optionvalues,你可以使用sc command這樣的格式。這會為你提供詳細的幫助。
Optionvalues
為optionname的引數的名稱指定它的數值。有效數值範圍常常限制於哪一個引數的optionname。如果要列表請用sc command來詢問每個命令。
Optionname--Optionvalues描述
type=----own, share, interact, kernel, filesys
關於建立服務的型別,選項值包括驅動程式使用的型別,預設是share。
start=----boot, sys tem, auto, demand, disabled
關於啟動服務的型別,選項值包括驅動程式使用的型別,預設是demand(手動)。
error=----normal, severe, critical, ignore
當服務在匯入失敗錯誤的嚴重性,預設是normal。
binPath=--(string)
服務二進位制檔案的路徑名,這裡沒有預設值,這個字串是必須設定的。
group=----(string)
這個服務屬於的組,這個組的列表儲存在登錄檔中的ServiceGroupOrder下。預設是nothing。
tag=----(string)
如果這個字串被設定為yes,sc可以從CreateService call中得到一個tagId。然而,SC並不顯示這個標籤,所以使用這個沒有多少意義。預設是nothing
depend=----(space separated string)有空格的字串。
在這個服務啟動前必須啟動的服務的名稱或者是組。
obj=----(string)
賬號執行使用的名稱,也可以說是登陸身份。預設是localsys tem
Displayname=--(string)
一個為在使用者介面程式中鑑別各個服務使用的字串。
password=--(string)
一個密碼,如果一個不同於localsys tem的賬號使用時需要使用這個。
Optionvalues
Optionname引數名稱的數值列表。參考optionname。當我們輸入一個字串時,如果輸入一個空的引用這意味著一個空的字串將被匯入。
需要注意的是:
1. 在option= xxxxx格式中,“=”號和後面的內容一定要有空格,如depend= Tcpip
2. 如果命令中的需要進行雙引號的巢狀,使用反斜槓加引號 " \" " 來進行轉義處理。
示例
sc create svnservice binpath= "\"D:\Servers\Subversion\bin\svnserve.exe\" --service -r E:\SVN\repository" displayname= "SVNService" depend= Tcpip start= auto
使用SC命令刪除windows服務
sc delete
從登錄檔中刪除服務子項。如果服務正在執行或者另一個程序有一個該服務的開啟控制代碼,那麼此服務將標記為刪除。
語法
sc [ServerName] delete [ServiceName]
引數
ServerName
指定服務所在的遠端伺服器名稱。該名稱必須使用 UNC 格式(“\\myserver”)。要在本機上執行 SC.exe,請忽略此引數。
ServiceName
指定由 getkeyname 操作返回的服務名。
示例
sc delete svnservice
失敗提示:DeleteService FAILED 1072
在刪除服務時可能會遇上一個失敗提示“DeleteService FAILED 1072: The specified service has been marked for deletion.”,或者執行沒報錯,但服務仍然在服務管理列表中。
這 是因為server被解除安裝掉時,會檢查狀態(實際是標記狀 態,啟動服務時檢查,確定定啟動或是解除安裝)。如果是啟動狀態,則在服務停止時自動解除安裝;否則立即解除安裝。所以報錯的原因可能是因為服務處於啟動狀態,所以無 法刪除,如果需要立即刪除,需要使用命令終止服務,命令格式如下:
sc stop ServiceName