Win32_Service クラスの StopService メソッド (Sdoias.h)
StopServiceWMI クラス メソッドは、Win32_Service オブジェクトで表されるサービスを停止状態にします。
このトピックでは、マネージド オブジェクト形式 (MOF) 構文を使用します。 このメソッドの使用方法の詳細については、「メソッドの 呼び出し」を参照してください。
構文
uint32 StopService();
パラメーター
このメソッドにはパラメーターはありません。
戻り値
次の一覧に記載されている値の 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
-
サービスは現在システムで一時停止されています。
注釈
停止または一時停止できるサービスを決定したら、 StopService メソッドと PauseService メソッドを使用してサービスを停止および一時停止できます。 サービスを一時停止するのではなく停止するか、またはその逆を行うかは、次のようないくつかの要因によって決まります。
- サービスは一時停止できますか? そうでない場合、唯一のオプションはサービスを停止することです。
- サービスに既に接続されているユーザーに対するクライアント要求の処理を続行する必要がありますか? その場合、通常、サービスを一時停止すると、新しいクライアントへのアクセスを拒否しながら、既存のクライアントを処理できます。 これに対し、サービスを停止すると、すべてのクライアントが直ちに切断されます。
- サービスを再構成し、変更をすぐに有効にする必要がありますか? サービスの一時停止中にサービスのプロパティを変更することはできますが、サービスが実際に停止して再起動されるまで、ほとんどのプロパティは有効になりません。
サービスを停止するために必要なスクリプト コードは、サービスを一時停止するために必要なコードとほぼ同じです。
依存サービスが実行されているサービスを停止しようとすると、 StopService メソッドは戻り値 3 で失敗します。 依存サービスを最初に停止する必要があります。
サービスを停止した場合は、すぐにWin32_Serviceをチェックします。値にサービスが実行中と表示される場合があるため、State プロパティ。
例
Set-RemoteService PowerShell サンプル リモート マシンのサービス状態を設定します。
サービスの停止とその依存 VBScript サンプルは、サービスとすべての依存サービスを停止します。
次の VBScript コード サンプルは、サービスをシャットダウンする方法を示しています。
Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='ClipSrv'")
for each Service in ServiceSet
RetVal = Service.StopService()
if RetVal = 0 then
WScript.Echo "Service stopped"
elseif RetVal = 5 then
WScript.Echo "Service already stopped"
end if
next
次の Perl コード サンプルは、サービスをシャットダウンする方法を示しています。
use strict;
use Win32::OLE;
my $ServiceSet;
eval { $ServiceSet =
Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2")->
ExecQuery("SELECT * FROM Win32_Service WHERE Name='ClipSrv'"); };
if (!$@ && defined $ServiceSet)
{
foreach my $ServiceInst (in $ServiceSet)
{
my $Result = $ServiceInst->StopService();
if ($Result == 0)
{
print "\nService stopped\n";
}
elsif ($Result == 5)
{
print "\nService already stopped\n";
}
}
}
else
{
print STDERR Win32::OLE->LastError, "\n";
}
次の VBScript コード例は、依存サービスが停止されるまで NetDDE サービスを停止できないことを示しています。 スクリプトを実行するには、Services.msc MMC スナップインまたは Net Start コマンドを使用して、NetDDE サービスとその依存サービスが実行されていることを確認します。
Win32_DependentService クラスを使用すると、Associators Of クエリを使用してサービスの依存関係を検索できます。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set objNetDDEservice = _
objWMIService.Get("Win32_Service.Name='NetDDE'")
WScript.Echo "NetDDE service state: " & objNetDDEService.State
WScript.Echo "Stopping NetDDE service"
Return = objNetDDEService.StopService()
WScript.Echo "Return value: " & Return & _
" Service cannot be stopped because " & _
"dependent services are running"
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='NetDDE'} Where " _
& "AssocClass=Win32_DependentService " & _
"Role=Antecedent" )
For Each objService in colServiceList
WScript.Echo "Dependent service: " & objService.Name & _
" State: " & objService.State
WScript.Echo "Stopping dependent service " & objService.Name
objService.StopService()
Next
Wscript.Sleep 20000
WScript.Echo "Stopping NetDDE service"
Return = objNetDDEService.StopService()
WScript.Echo "Return value: " & Return
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
名前空間 |
Root\CIMV2 |
Header |
|
MOF |
|
[DLL] |
|