Win32_Service クラスの StartService メソッド (CIMWin32 WMI プロバイダー)
StartService メソッドは、参照されるサービスをスタートアップ状態にしようとします。
このトピックでは、マネージド オブジェクト形式 (MOF) 構文を使用します。 このメソッドの使用方法の詳細については、「メソッドの 呼び出し」を参照してください。
構文
uint32 StartService();
パラメーター
このメソッドにはパラメーターはありません。
戻り値
次の一覧に記載されている値の 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
-
サービスは現在システムで一時停止されています。
注釈
停止しているサービスと一時停止されているサービスの間に実際的な違いはないようですが、2 つの状態は SCM とは異なって表示されます。 停止したサービスは、実行されていないサービスであり、サービス開始手順全体を実行する必要があります。 ただし、一時停止中のサービスはまだ実行中ですが、機能が中断されています。 このため、一時停止したサービスはサービス開始手順全体を実行する必要はありませんが、機能を再開するには別の手順が必要です。
停止されたサービスを開始したり、一時停止されたサービスを再開したりするには、適切な方法を使用する必要があります。 Win32_Service メソッド StartService と ResumeService は、次の状況で使用する必要があります。
- サービスが現在停止している場合は、 StartService メソッドを使用してサービスを再起動する必要があります。 ResumeService は、現在停止しているサービスを開始できません。
- サービスが一時停止されている場合は、 ResumeService を使用する必要があります。 一時停止中のサービスで StartService メソッドを使用すると、"サービスは既に実行されています" というメッセージが表示されます。ただし、再開サービス制御コードが送信されるまで、サービスは一時停止されたままになります。
別のサービスに依存する停止したサービスを開始すると、両方のサービスが開始されます。 このメソッドを使用してサービスを開始すると、依存するサービスは自動的に開始されません。 依存関係を見つけて個別に開始するには、関連付けクラス Win32_DependentService と Associationors Of クエリを使用する必要があります。
例
リモートで RDP PowerShell を有効にするサンプルでは、リモート デスクトップ サービスを有効にします。
サービス PowerShell の 開始、停止、有効化、無効化 のサンプルでは、サービスの開始、停止、有効化、または無効化を行います。
次の VBSScript コード サンプルは、 Win32_Serviceのインスタンスから特定のサービスを開始する方法を示しています。
Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='ClipSrv'")
for each Service in ServiceSet
RetVal = Service.StartService()
if RetVal = 0 then WScript.Echo "Service started"
if RetVal = 10 then WScript.Echo "Service already running"
next
次の Perl コード サンプルは、 Win32_Serviceのインスタンスから特定のサービスを開始する方法を示しています。
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 $service (in $ServiceSet)
{
my $Result = $service->StartService();
if ($Result == 0)
{
print "\nService started\n";
}
elsif ($Result == 10)
{
print "\nService already running\n";
}
}
}
else
{
print STDERR Win32::OLE->LastError, "\n";
}
次の VBScript コード例 NetDDE は、NetDDEDSDM サービスに依存しています。 このスクリプトは、NetDDE が依存するクラスを検索して開始します。これにより、NetDDE は自動的に開始されません。
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
' Stop NetDDE if it is running
Set objNetDDEService = objWMIService.Get("Win32_Service.Name='NetDDE'")
Return = objNetDDEService.StopService()
' NetDDE is in the dependent role to another service
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='NetDDE'} Where " & "AssocClass=Win32_DependentService " & "Role=Dependent" )
' start the service on which NetDDE is dependent
For Each objService in colServiceList
WScript.Echo "Starting " & objService.Name
Return = objService.StartService()
If Return = 0 Then
WScript.Echo "Parent service " & objService.Name & " started successfully"
Else
WScript.Echo "Parent service " & objService.Name & " did not start. Return = " & Return
End If
Next
' NetDDE is still stopped
Set objNetDDEService = _
objWMIService.Get("Win32_Service.Name='NetDDE'")
WScript.Echo "Dependent NetDDE service is " & objNetDDEService.State
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
名前空間 |
Root\CIMV2 |
MOF |
|
[DLL] |
|