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 メソッド StartServiceResumeService は、次の状況で使用する必要があります。

  • サービスが現在停止している場合は、 StartService メソッドを使用してサービスを再起動する必要があります。 ResumeService は、現在停止しているサービスを開始できません。
  • サービスが一時停止されている場合は、 ResumeService を使用する必要があります。 一時停止中のサービスで StartService メソッドを使用すると、"サービスは既に実行されています" というメッセージが表示されます。ただし、再開サービス制御コードが送信されるまで、サービスは一時停止されたままになります。

別のサービスに依存する停止したサービスを開始すると、両方のサービスが開始されます。 このメソッドを使用してサービスを開始すると、依存するサービスは自動的に開始されません。 依存関係を見つけて個別に開始するには、関連付けクラス Win32_DependentServiceAssociationors 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
CIMWin32.mof
[DLL]
CIMWin32.dll

こちらもご覧ください

オペレーティング システム クラス

Win32_Service

WMI タスク: サービス