Win32_Service クラスの Delete メソッド (CIMWin32 WMI プロバイダー)
DELETEWMI クラス メソッドは、既存のサービスを削除します。
このトピックでは、マネージド オブジェクト形式 (MOF) 構文を使用します。 このメソッドの使用方法の詳細については、「メソッドの 呼び出し」を参照してください。
構文
uint32 Delete();
パラメーター
このメソッドにはパラメーターはありません。
戻り値
次の一覧に記載されている値の 1 つ、またはエラーを示すその他の値を返します。 その他のエラー コードについては、「 WMI エラー定数 」または 「WbemErrorEnum」を参照してください。 一般的な HRESULT 値については、「 システム エラー コード」を参照してください。
-
0
-
要求が受け入れられました。
-
1
-
要求はサポートされていません。
-
2
-
ユーザーは必要なアクセス権を持っていませんでした。
-
3
-
そのサービスは、実行中の他のサービスが依存しているので停止できません。
-
4
-
要求された制御コードは有効でないか、またはサービスを受け入れ可能ではありません。
-
5
-
サービスの状態 (Win32_BaseServiceのため、要求された制御コードをサービスに送信できません。State プロパティ) は、0、1、または 2 と等しくなります。
-
6
-
サービスは開始されていません。
-
7
-
サービスは適切な時間内に開始要求に応答しませんでした。
-
8
-
サービスの開始時に不明なエラーが発生しました。
-
9
-
サービス実行可能ファイルへのディレクトリ パスが見つかりませんでした。
-
"10"
-
サービスは既に実行されています。
-
11
-
新しいサービスを追加するデータベースはロックされています。
-
12
-
このサービスが依存する依存関係がシステムから削除されました。
-
13
-
サービスは依存関係のあるサービスから必要なサービスを見つけられませんでした。
-
14
-
サービスはシステムから無効になっています。
-
15
-
サービスにはシステムで実行するための正しい認証がありません。
-
16
-
このサービスはシステムから削除されています。
-
17
-
サービスに実行スレッドがありません。
-
18
-
サービスは起動時に循環依存関係を持ちます。
-
19
-
サービスは同じ名前で実行されています。
-
20
-
サービス名に無効な文字が含まれています。
-
21
-
無効なパラメーターがサービスに渡されました。
-
22
-
このサービスを実行するアカウントが無効であるか、サービスを実行するためのアクセス許可がありません。
-
23
-
サービスは、システムから利用できるサービスのデータベースにあります。
-
24
-
サービスは現在システムで一時停止されています。
注釈
organizationが変わると、特定のコンピューターから特定のサービスを削除する場合があります。 社内およびサードパーティのサービスは WMI を使用して削除できますが、オペレーティング システム サービスは Sysocmgr.exe を使用して削除できます。
サービスを削除する準備をするときは、次の情報に注意してください。
サービスを削除する前に、サービスを停止する必要があります。 delete コマンドを発行するときにサービスが実行されている場合、サービスは削除対象としてマークされますが、停止して開いているすべてのハンドルが閉じられるまで、サービスは引き続き実行されます。
サービスが停止しない場合、そのサービスは削除されません。
サービスを削除しても、サービスの実行可能ファイルは削除されません。
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 |
|
[DLL] |
|