共用方式為


Win32_Service類別 (CIMWin32 WMI 提供者) 刪除方法

刪除WMI 類別方法會刪除現有的服務。

本主題使用 Managed 物件格式 (MOF) 語法。 如需使用此方法的詳細資訊,請參閱 呼叫 方法

語法

uint32 Delete();

參數

這個方法沒有任何參數。

傳回值

傳回下列清單中所列的其中一個值或任何其他值,以指出錯誤。 如需其他錯誤碼,請參閱 WMI 錯誤常數WbemErrorEnum。 如需一般 HRESULT 值,請參閱 系統錯誤碼

0

要求已被接受。

1

不支援此要求。

2

使用者沒有必要的存取權。

3

無法停止此服務,因為與它相依的其他服務正在執行中。

4

要求的控制碼無效,或是服務不接受此控制碼。

5

要求的控制程式代碼無法傳送至服務,因為服務的狀態 (Win32_BaseService狀態 屬性) 等於 0、1 或 2。

6

尚未啟動服務。

7

服務並未及時回應啟動要求。

8

啟動服務時發生未知的失敗。

9

找不到服務可執行檔的目錄路徑。

10

服務已在執行中。

11

要加入新服務的資料庫已被鎖定。

12

此服務所依賴的相依性已從系統中移除。

13

服務在相依的服務中找不到所需的服務。

14

已經從系統中停用服務。

15

此服務未通過驗證,無法在系統上執行。

16

此服務正從系統中移除。

17

服務沒有執行執行緒。

18

服務啟動時具有迴圈相依性。

19

服務是以相同名稱執行。

20

服務名稱的字元無效。

21

不正確參數已傳遞至服務。

22

此服務執行所在的帳戶無效或缺少執行服務的許可權。

23

服務存在於系統可使用之服務的資料庫中。

24

服務目前在系統中暫停。

備註

當組織變更時,您可能會決定從特定電腦移除特定服務。 您可以使用 WMI 來移除內部和協力廠商服務,而可以使用 Sysocmgr.exe 來移除作業系統服務。

準備移除服務時,請記住下列資訊:

  • 在您移除服務之前,必須先停止服務。 如果服務在發出刪除命令時正在執行,服務會標示為要刪除,但會繼續執行,直到停止且所有開啟的控制碼都關閉為止。

    如果服務從未停止,則永遠不會刪除該服務。

  • 移除服務並不會移除服務的可執行檔。

    使用 WMI 移除服務會刪除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下的相關登錄專案。 因此,服務已不再安裝,且無法透過服務嵌入式管理單元使用。 不過,WMI 不會刪除可執行檔,這表示您可以輕鬆地重新安裝服務。 若要刪除可執行檔,您必須擷取路徑名稱,然後刪除檔案。

  • 例如,使用 WMI 移除基底 Windows 2000 服務 (,DHCP) 會刪除該服務的登錄專案,但不會從 [系統管理工具] 功能表移除快捷方式,或從 [Windows 元件精靈] 移除服務。 這可能會混淆任何人嘗試判斷電腦設定的方式。

    例如,如果您使用 WMI 腳本移除 DHCP 服務,DHCP 服務就不會再列在服務嵌入式管理單元中。 不過,DHCP 主控台的非功能快捷方式會保留在 [系統管理工具] 功能表中,如果您啟動 Windows 元件精靈,則表示已安裝 DHCP 服務。

    因此,您應該一律使用 Sysocmgr.exe,以程式設計方式移除 Windows 2000 服務。

範例

下列 VBScript 程式碼範例說明如何刪除服務。

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_Service WHERE Name = 'DbService'")
For Each objService in colListOfServices
 objService.StopService()
 objService.Delete()
Next

下列 Perl 程式碼範例說明如何刪除服務。

use strict;
use Win32::OLE;

my ($Service, $ServiceSet) ;
eval {$ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}")->
 ExecQuery("SELECT * FROM Win32_Service WHERE Name='MyService'");};
unless($@)
{
 foreach $Service (in $ServiceSet)
 {
  my $RetVal = $Service->Delete();
  if ($RetVal == 0)  
  {
   print "Service deleted \n"; 
  }
  else  
  {
   print "Delete failed: %d", $RetVal;
  }
 }
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

規格需求

需求
最低支援的用戶端
Windows Vista
最低支援的伺服器
Windows Server 2008
命名空間
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

另請參閱

作業系統類別

Win32_Service

WMI 工作:服務