Win32_Service 클래스의 StopService 메서드(Sdoias.h)
StopServiceWMI 클래스 메서드는 Win32_Service 개체가 나타내는 서비스를 중지된 상태로 배치합니다.
이 항목에서는 MOF(Managed Object Format) 구문을 사용합니다. 이 메서드를 사용하는 방법에 대한 자세한 내용은 메서드 호출을 참조 하세요.
구문
uint32 StopService();
매개 변수
이 메서드는 매개 변수가 없습니다.
반환 값
다음 목록에 나열된 값 중 하나 또는 오류를 나타내는 다른 값을 반환합니다. 추가 오류 코드는 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 검사.상태 속성은 값이 여전히 서비스를 실행 중으로 표시할 수 있으므로
예제
다음 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 클래스를 사용하면 연결자 쿼리를 통해 서비스 종속성을 찾을 수 있습니다.
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 |
헤더 |
|
MOF |
|
DLL |
|