Win32_Service 클래스의 Delete 메서드(CIMWin32 WMI 공급자)
DeleteWMI 클래스 메서드는 기존 서비스를 삭제합니다.
이 항목에서는 MOF(Managed Object Format) 구문을 사용합니다. 이 메서드를 사용하는 방법에 대한 자세한 내용은 메서드 호출을 참조하세요.
구문
uint32 Delete();
매개 변수
이 메서드에는 매개 변수가 없습니다.
반환 값
다음 목록에 나열된 값 또는 오류를 나타내는 다른 값 중 하나를 반환합니다. 추가 오류 코드는 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
-
서비스가 현재 시스템에서 일시 중지되었습니다.
설명
organization 변경되면 특정 컴퓨터에서 특정 서비스를 제거하도록 결정할 수 있습니다. WMI를 사용하여 사내 및 타사 서비스를 제거할 수 있지만 운영 체제 서비스는 Sysocmgr.exe 사용하여 제거할 수 있습니다.
서비스 제거를 준비할 때 다음 정보를 염두에 두어야 합니다.
서비스를 제거하기 전에 서비스를 중지해야 합니다. delete 명령을 실행할 때 서비스가 실행 중이면 서비스가 삭제되도록 표시되지만, 서비스가 중지되고 열려 있는 모든 핸들이 닫히기 전까지 계속 실행됩니다.
서비스가 중지되지 않으면 해당 서비스는 삭제되지 않습니다.
서비스를 제거해도 서비스의 실행 파일은 제거되지 않습니다.
WMI를 사용하여 서비스를 제거하면 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 아래의 관련 레지스트리 항목이 삭제됩니다. 따라서 서비스는 더 이상 설치되지 않으며 서비스 스냅인을 통해 사용할 수 없습니다. 그러나 WMI는 실행 파일을 삭제하지 않으므로 서비스를 쉽게 다시 설치할 수 있습니다. 실행 파일을 삭제하려면 경로 이름을 검색한 다음 파일을 삭제해야 합니다.
WMI를 사용하여 기본 Windows 2000 서비스(예: DHCP)를 제거하면 해당 서비스에 대한 레지스트리 항목이 삭제되지만 관리 도구 메뉴에서 바로 가기를 제거하거나 Windows 구성 요소 마법사에서 서비스를 제거하지는 않습니다. 이렇게 하면 컴퓨터가 어떻게 구성되었는지 확인하려는 모든 사용자가 혼동할 수 있습니다.
예를 들어 WMI 스크립트를 사용하여 DHCP 서비스를 제거하는 경우 DHCP 서비스는 더 이상 서비스 스냅인에 나열되지 않습니다. 그러나 DHCP 콘솔에 대한 작동하지 않는 바로 가기는 관리 도구 메뉴에 남아 있으며 Windows 구성 요소 마법사를 시작하면 DHCP 서비스가 설치되었음을 나타냅니다.
따라서 항상 Sysocmgr.exe 사용하여 Windows 2000 서비스를 프로그래밍 방식으로 제거해야 합니다.
예제
다음 VBScript 코드 샘플에서는 서비스를 삭제하는 방법을 설명합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
("SELECT * FROM Win32_Service WHERE Name = 'DbService'")
For Each objService in colListOfServices
objService.StopService()
objService.Delete()
Next
다음 Perl 코드 샘플에서는 서비스를 삭제하는 방법을 설명합니다.
use strict;
use Win32::OLE;
my ($Service, $ServiceSet) ;
eval {$ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}")->
ExecQuery("SELECT * FROM Win32_Service WHERE Name='MyService'");};
unless($@)
{
foreach $Service (in $ServiceSet)
{
my $RetVal = $Service->Delete();
if ($RetVal == 0)
{
print "Service deleted \n";
}
else
{
print "Delete failed: %d", $RetVal;
}
}
}
else
{
print STDERR Win32::OLE->LastError, "\n";
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows Vista |
지원되는 최소 서버 |
Windows Server 2008 |
네임스페이스 |
Root\CIMV2 |
MOF |
|
DLL |
|