Win32_Service 클래스의 StartService 메서드(CIMWin32 WMI 공급자)

StartService 메서드는 참조된 서비스를 시작 상태에 배치하려고 시도합니다.

이 항목에서는 MOF(Managed Object Format) 구문을 사용합니다. 이 메서드를 사용하는 방법에 대한 자세한 내용은 메서드 호출을 참조 하세요.

구문

uint32 StartService();

매개 변수

이 메서드는 매개 변수가 없습니다.

반환 값

다음 목록에 나열된 값 중 하나 또는 오류를 나타내는 다른 값을 반환합니다. 추가 오류 코드는 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

서비스가 현재 시스템에서 일시 중지되었습니다.

설명

중지된 서비스와 일시 중지된 서비스 간에 실질적인 차이가 없는 것처럼 보일 수 있지만 두 상태는 SCM과 다르게 표시됩니다. 중지된 서비스는 실행되고 있지 않고 전체 서비스 시작 절차를 거쳐야 하는 서비스입니다. 그러나 일시 중지된 서비스는 여전히 실행 중이지만 작동이 일시 중단되었습니다. 이 때문에 일시 중지된 서비스는 전체 서비스 시작 프로시저를 거치지 않아도 되지만 작동을 다시 시작하려면 다른 절차가 필요합니다.

중지된 서비스를 시작하거나 일시 중지된 서비스를 다시 시작하려면 적절한 방법을 사용해야 합니다. Win32_Service 메서드 StartServiceResumeService는 다음과 같은 경우에 사용해야 합니다.

  • 서비스가 현재 중지된 경우 StartService 메서드를 사용하여 다시 시작해야 합니다.ResumeService는 현재 중지된 서비스를 시작할 수 없습니다.
  • 서비스가 일시 중지된 경우 ResumeService를 사용해야 합니다. 일시 중지된 서비스에서 StartService 메서드를 사용하는 경우 "서비스가 이미 실행 중입니다."라는 메시지가 표시됩니다. 그러나 다시 시작 서비스 제어 코드가 전송될 때까지 서비스가 다시 일시 중지된 기본.

다른 서비스에 의존하는 중지된 서비스를 시작하면 두 서비스가 모두 시작됩니다. 이 메서드로 서비스를 시작하면 종속 서비스가 자동으로 시작되지 않습니다. 연결 클래스 Win32_DependentServiceAssociators Of 쿼리를 사용하여 종속 항목을 찾아 개별적으로 시작해야 합니다.

예제

다음 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 작업: 서비스