다음을 통해 공유


Win32_Service 클래스의 메서드 만들기(CIMWin32 WMI 공급자)

WMI 클래스만들기 메서드는 새 시스템 서비스를 만듭니다.

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

구문

uint32 Create(
  [in] string  Name,
  [in] string  DisplayName,
  [in] string  PathName,
  [in] uint8   ServiceType,
  [in] uint8   ErrorControl,
  [in] string  StartMode,
  [in] boolean DesktopInteract,
  [in] string  StartName,
  [in] string  StartPassword,
  [in] string  LoadOrderGroup,
  [in] string  LoadOrderGroupDependencies[],
  [in] string  ServiceDependencies[]
);

매개 변수

Name [in]

Create 메서드에 설치할 서비스의 이름입니다. 최대 문자열 길이는 256자입니다. Service Control Manager 데이터베이스는 문자의 대/소문자를 유지하지만 서비스 이름 비교는 항상 대/소문자를 구분하지 않습니다. 슬래시(/) 및 이중 백 슬래시(\)가 잘못된 서비스 이름 문자입니다.

DisplayName [in]

서비스의 표시 이름입니다. 이 문자열의 최대 길이는 256자입니다. 이름은 서비스 제어 관리자에서 대/소문자를 유지합니다. DisplayName 비교는 항상 대/소문자를 구분하지 않습니다.

제약 조건: Name 매개 변수와 동일한 값을 허용합니다.

예: "Atdisk".

PathName [in]

서비스를 구현하는 실행 파일의 정규화된 경로입니다.

예: "\SystemRoot\System32\drivers\afd.sys".

ServiceType [in]

호출하는 프로세스에 제공되는 서비스 유형입니다.

1(0x1)

커널 드라이버

2(0x2)

파일 시스템 드라이버

4(0x4)

어댑터

8(0x8)

인식기 드라이버

16(0x10)

자체 프로세스

32(0x20)

프로세스 공유

256 (0x100)

대화형 프로세스

ErrorControl [in]

Create 메서드가 시작되지 않는 경우 오류의 심각도입니다. 값은 오류가 발생하는 경우 시작 프로그램에서 수행한 작업을 나타냅니다. 모든 오류는 시스템에 의해 기록됩니다.

0

사용자에게 오류를 알리지 않습니다.

1

사용자에게 오류를 알립니다.

2

마지막으로 성공한 올바른 구성으로 시스템을 다시 시작합니다.

3

시스템은 좋은 구성으로 시작하려고 시도합니다.

StartMode [in]

Windows 기본 서비스의 시작 모드입니다.

부팅

운영 체제 로더에서 시작한 디바이스 드라이버입니다. 이 값은 드라이버 서비스에 대해서만 유효합니다.

시스템

운영 체제 초기화 프로세스에서 시작된 디바이스 드라이버입니다. 이 값은 드라이버 서비스에 대해서만 유효합니다.

자동

시스템을 시작하는 동안 Service Control Manager에서 자동으로 시작할 서비스입니다.

수동

프로세스가 StartService 메서드를 호출할 때 Service Control Manager에서 시작할 서비스입니다.

사용 안 함

더 이상 시작할 수 없는 서비스입니다.

DesktopInteract [in]

true이면 서비스는 데스크톱에서 창을 만들거나 통신할 수 있습니다.

StartName [in]

서비스가 실행되는 계정 이름입니다. 서비스 유형에 따라 계정 이름은 DomainName\Username 또는 UPN(사용자 계정 이름) 형식(Username@DomainName) 형식일 수 있습니다. 서비스 프로세스는 실행될 때 이러한 두 가지 양식 중 하나를 사용하여 기록됩니다. 계정이 기본 제공 도메인에 속하는 경우 .\Username을 지정할 수 있습니다. NULL을 지정하면 서비스가 LocalSystem 계정으로 로그온됩니다. 커널 또는 시스템 수준 드라이버의 경우 StartName 에는 입력 및 출력(I/O) 시스템에서 디바이스 드라이버를 로드하는 데 사용하는 드라이버 개체 이름(즉, \FileSystem\Rdr 또는 \Driver\Xns)이 포함됩니다. NULL을 지정하면 드라이버가 서비스 이름에 따라 I/O 시스템에서 만든 기본 개체 이름으로 실행됩니다. 예: DWDOM\관리.

StartPassword [in]

StartName 매개 변수로 지정된 계정 이름에 대한 암호입니다. 암호를 변경하지 않는 경우 NULL 을 지정합니다. 서비스에 암호가 없으면 빈 문자열을 지정합니다.

LoadOrderGroup [in]

새 서비스와 연결된 그룹 이름입니다. 부하 순서 그룹은 레지스트리에 포함되며 서비스가 운영 체제에 로드되는 순서를 결정합니다. 포인터가 NULL 이거나 빈 문자열을 가리키는 경우 서비스는 그룹에 속하지 않습니다. 그룹 간의 종속성은 LoadOrderGroupDependencies 매개 변수에 나열되어야 합니다. 부하 순서 그룹 목록의 서비스가 먼저 시작되고, 그 다음에는 부하 순서 그룹 목록에 없는 그룹의 서비스, 그룹에 속하지 않는 서비스가 차례로 시작됩니다. 레지스트리에는 다음 위치에 있는 부하 순서 그룹 목록이 있습니다.

Hkey_local_machine\시스템\CurrentControlSet\컨트롤\ServiceGroupOrder

LoadOrderGroupDependencies [in]

이 서비스 전에 시작해야 하는 부하 순서 그룹 배열입니다. 배열의 각 항목은 NULL 로 구분되고 목록은 두 개의 NULL 값으로 종료됩니다. Visual Basic 또는 스크립트에서 vbArray를 전달할 수 있습니다. 포인터가 NULL 이거나 빈 문자열을 가리키는 경우 서비스에 종속성이 없습니다. 서비스 및 서비스 그룹이 동일한 네임스페이스를 공유하기 때문에 그룹 이름은 서비스 이름과 구분하려면 SC_GROUP_IDENTIFIER (Winsvc.h 파일에 정의됨) 문자로 접두사를 지정해야 합니다. 그룹에 대한 종속성은 그룹의 모든 멤버를 시작한 후 그룹의 구성원 중 하나 이상이 실행 중인 경우 이 서비스를 실행할 수 있음을 의미합니다.

ServiceDependencies [in]

이 서비스가 시작되기 전에 시작해야 하는 서비스 이름이 들어 있는 배열입니다. 배열의 각 항목은 NULL 로 구분되고 목록은 두 개의 NULL 값으로 종료됩니다. Visual Basic 또는 스크립트에서 vbArray를 전달할 수 있습니다. 포인터가 NULL이거나 빈 문자열을 가리키는 경우 서비스에 종속성이 없습니다. 서비스에 대한 종속성은 종속된 서비스가 실행 중인 경우에만 이 서비스를 실행할 수 있음을 의미합니다.

반환 값

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

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

설명

서비스는 일반적으로 운영 체제 설치의 일부로 또는 서비스 개발자가 제공하는 설치 프로그램을 사용하는 두 가지 방법 중 하나로 설치됩니다. 그러나 일부 서비스, 특히 사내에서 만든 서비스에는 설치 프로그램이 없을 수 있습니다. 이러한 인스턴스에서는 Create 메서드를 사용하여 프로그래밍 방식으로 서비스를 설치할 수 있습니다.

이름에도 불구하고 Create 메서드는 실제로 서비스를 만들지 않습니다. 기존 서비스를 설치하기만 하면 됩니다. 이 명령을 사용하려면 서비스 실행 파일을 컴퓨터에 복사한 다음 만들기 를 사용하여 서비스를 설치해야 합니다.

Create 메서드는 Change 메서드와 비슷합니다. 두 경우 모두 서비스의 속성은 메서드에 매개 변수로 전달됩니다. Change 메서드와 함께 사용되는 매개 변수와 마찬가지로 이러한 매개 변수가 전달되는 순서는 매우 중요합니다.

LoadOrderGroup 매개 변수는 실행 종속성을 정의하는 시스템 서비스 그룹을 나타냅니다. 서비스는 서로 종속되기 때문에 부하 주문 그룹에서 지정한 순서대로 서비스를 시작해야 합니다. 이러한 종속 서비스를 사용하려면 선행 서비스가 올바르게 작동해야 합니다.

예제

다음 VBScript는 DbService라는 서비스를 설치합니다.

Const OWN_PROCESS = 16
Const NOT_INTERACTIVE = True
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objService = objWMIService.Get("Win32_BaseService")
errReturn = objService.Create ("DbService", "Personnel Database", _
"c:\windows\system32\db.exe", OWN_PROCESS ,2 ,"Automatic" , _
 NOT_INTERACTIVE ,".\LocalSystem" ,"")

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista
지원되는 최소 서버
Windows Server 2008
네임스페이스
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

추가 정보

운영 체제 클래스

Win32_Service

WMI 작업: 서비스