ServiceInstall 테이블

ServiceInstall 테이블은 서비스를 설치하는 데 사용되며 다음 열이 있습니다.

Column 형식 Nullable
ServiceInstall 식별자 Y N
Name 포맷 N N
DisplayName 포맷 N Y
ServiceType DoubleInteger N N
StartType DoubleInteger N N
ErrorControl DoubleInteger N N
LoadOrderGroup 포맷 N Y
종속성 포맷 N Y
StartName 포맷 N Y
암호 포맷 N Y
인수 포맷 N Y
구성 요소_ 식별자 N N
Description 포맷 N Y

ServiceInstall

테이블의 기본 키입니다.

이름

이 열은 설치할 서비스 이름을 지정하는 문자열입니다. 문자열의 최대 길이는 256자입니다. 서비스 제어 관리자 데이터베이스는 서비스 이름에 있는 문자의 대/소문자를 유지하지만 서비스 이름의 비교는 대/소문자를 구분하지 않습니다. 슬래시(/) 및 백 \ 슬래시()는 잘못된 서비스 이름 문자입니다.

Displayname

이 열은 사용자 인터페이스 프로그램에서 서비스를 식별하는 데 사용하는 지역화 가능한 문자열입니다. 문자열의 최대 길이는 256자입니다. 서비스 제어 관리자는 표시 이름의 대/소문자를 유지하지만 표시 이름 비교는 대/소문자를 구분하지 않습니다.

ServiceType

이 열은 서비스 유형을 지정하는 비트 플래그 집합입니다. 이 열에는 다음 서비스 유형 중 하나를 지정해야 합니다.

서비스 유형 Description
서비스 _ WIN32 _ 자체 _ 프로세스 0x00000010 자체 프로세스를 실행하는 Microsoft Win32 서비스입니다.
서비스 _ WIN32 _ 공유 _ 프로세스 0x00000020 프로세스를 공유하는 Win32 서비스입니다.
서비스 _ 대화형 _ 프로세스 0x00000100 데스크톱과 상호 작용하는 Win32 서비스입니다. 이 값은 단독으로 사용할 수 없으며 이전의 두 형식 중 하나에 추가해야 합니다. 이 플래그를 사용하는 경우 StartName 열을 LocalSystem 또는 null로 설정해야 합니다.

지원되지 않는 서비스 유형은 다음과 같습니다.

서비스 유형 Description
서비스 _ 커널 _ 드라이버 0x00000001 드라이버 서비스입니다.
서비스 _ 파일 _ 시스템 _ 드라이버 0x00000002 파일 시스템 드라이버 서비스입니다.

Starttype

이 열은 서비스를 시작할 시기를 지정하는 비트 플래그 집합입니다. 다음 서비스 시작 유형 중 하나를 이 열에 지정해야 합니다.

서비스 시작 유형 Description
서비스 _ 자동 _ 시작 0x00000002 시스템이 시작되는 동안 서비스가 시작됩니다.
서비스 _ 수요 _ 시작 0x00000003 서비스는 서비스 제어 관리자가 StartService 함수를 호출할 때 시작합니다.
서비스 _ 사용 안 함 0x00000004 더 이상 시작할 수 없는 서비스를 지정합니다.

Windows 설치 관리자에서 SERVICE BOOT START 및 SERVICE SYSTEM START 옵션을 사용할 수 _ _ _ _ 없습니다.

ErrorControl

이 열은 시작 중에 서비스가 시작되지 않을 경우 시작 프로그램에서 수행되는 동작을 지정합니다. 이러한 값은 설치된 서비스에 대한 ServiceControl StartService 이벤트에 영향을 미칩니다. 다음 오류 제어 플래그 중 하나를 이 열에 지정해야 합니다.

다음 표의 플래그에 msidbServiceInstallErrorControlVital(값 = 0x08000) 상수를 추가하면 서비스를 시스템에 설치할 수 없는 경우 전체 설치가 실패하도록 지정됩니다.

오류 제어 플래그 시작 프로그램의 작업
서비스 _ 오류 _ 무시 0x00000000 오류를 기록하고 시작 작업을 계속합니다.
서비스 _ 오류 _ 정상 0x00000001 오류를 기록하고, 메시지 상자를 표시하고, 시작 작업을 계속합니다.
서비스 _ 오류 _ 위험 0x00000003 가능한 경우 오류를 기록하고 시스템이 양호한 것으로 알려진 마지막 구성으로 다시 시작됩니다. 마지막으로 양호한 구성을 시작하는 경우 시작 작업이 실패합니다.

LoadOrderGroup

이 열에는 이 서비스가 멤버인 로드 순서 그룹의 이름을 로깅하는 문자열이 포함되어 있습니다. 서비스가 그룹에 속하지 않는 경우 null 또는 빈 문자열을 지정합니다.

종속성

이 열은 시스템에서 이 서비스 전에 시작해야 하는 서비스 또는 로드 순서 그룹의 이름 목록입니다. 목록의 이름을 Null로 구분합니다. 서비스에 대한 의존도가 없으면 Null 또는 빈 문자열을 지정합니다. 구문을 사용하여 [ ~ ] Null을 삽입합니다. 그룹에 대한 종속성은 그룹의 모든 멤버를 시작하려고 시도한 후 그룹의 구성원이 하나 이상 실행 중인 경우 이 서비스를 실행할 수 있음을 의미합니다.

예를 들어 시스템에서 service1 및 service2를 시작하도록 요구하려면 ServiceInstall 열에 나열된 서비스를 시작하기 전에 [ ~ ] [ ~ ] [ ~ ] Dependencies 열에 service1 service2를 입력합니다. service1 및 service2 식별자는 테이블의 기본 키에서 발생하거나 이미 설치된 서비스의 이름이어야 합니다.

서비스 이름과 구분할 수 있도록 그룹 이름에 +를 접두사로 지정해야 합니다. ServiceInstall 열에 나열된 서비스를 시작하기 전에 시스템에서 주문 그룹 MyGroup의 service1 및 하나 이상의 멤버를 시작하도록 요구하려면 service1 [ ~ ] +MyGroup [ ~ ] [ ~ ] 을 입력합니다.

StartName

서비스는 이 열의 문자열에서 지정한 이름으로 로그온됩니다. 서비스 유형이 SERVICE _ WIN32 OWN PROCESS인 경우 _ _ DomainName UserName 형식의 계정 이름을 \ 사용합니다. 계정이 기본 제공 도메인에 속하는 경우 를 지정할 수 있습니다. \ 사용자. 서비스 유형이 SERVICE WIN32 SHARE PROCESS 또는 SERVICE INTERACTIVE PROCESS인 경우 LocalSystem 계정을 사용해야 _ _ _ _ _ 합니다. StartName이 null로 지정되고 대부분의 서비스가 이 열을 비워 두면 CreateService 함수는 LocalSystem 계정을 사용합니다.

암호

이 문자열은 StartName 열에 지정된 계정 이름의 암호입니다. 사용자에게 서비스로 로그온할 수 있는 권한이 있어야 합니다. StartName이 null이거나 빈 문자열인 경우 서비스에 암호가 없습니다. LocalSystem의 Startname은 null이므로 이 인스턴스의 암호는 null이므로 대부분의 서비스는 이 열을 비워 둡니다.

사용자 이름 및 암호를 사용하여 설치된 서비스를 삭제한 후에는 먼저 사용자 지정 작업을 사용하여 암호를 얻지 않고는 서비스를 롤백할 수 없습니다. 설치 관리자가 시스템의 보호된 부분에 저장된 암호를 제외한 서비스에 대한 모든 필요한 정보를 얻을 수 있습니다. 사용자 지정 작업은 사용자에게 메시지를 표시하거나, 데이터베이스에서 속성을 읽거나, 파일을 읽어 암호를 가져옵니다. 그런 다음, 사용자 지정 작업은 서비스를 다시 설치하기 전에 ChangeServiceConfig를 호출하여 암호를 제공해야 합니다.

Windows 설치 관리자가 암호 필드에 입력한 값을 로그 파일에 쓰지 않습니다.

인수

이 열에는 서비스를 실행하는 데 필요한 명령줄 인수 또는 속성이 포함됩니다.

구성 요소_

구성 요소 테이블중 하나의 열에 대한 외부 키입니다. InstallService 테이블을 사용하여 이 서비스를 설치하려면 이 구성 요소에 대한 KeyPath가 서비스의 실행 파일이어야 합니다.

설명

이 열에는 구성 중인 서비스에 대한 지역화 가능한 설명이 포함되어 있습니다. 이 열을 비워 두면 설치 관리자가 서비스에 대한 기존 설명(있는 경우)을 사용합니다. 자세한 내용은 Microsoft _ Windows SDK(소프트웨어 개발 키트)의 서비스 설명을 참조하세요. 기존 설명을 지우려면 [ ~ ] 이 열에 ""를 입력합니다. 그러면 새 서비스 또는 기존 서비스에 대한 빈 설명이 표시됩니다.

설명

시퀀스 테이블의 InstallServices 작업은 이 테이블의 정보를 처리합니다. 시퀀스 테이블 사용에 대한 자세한 내용은 시퀀스 테이블 사용을 참조하세요.

이 테이블에는 Win32 CreateService 함수에 대한 대부분의 매개 변수가 있습니다.

사용자 인터페이스를 사용하여 서비스가 원본에서 실행으로 설치되도록 지정할 수 있지만 설치 관리자는 실제로 이러한 유형의 설치를 지원하지 않습니다. 로컬 하드 드라이브에서 실행하려면 로컬 시스템의 권한 수준으로 실행되는 서비스를 설치해야 합니다. 로그 또는 시스템 레지스트리에 보안 데이터를 쓸 수 있으므로 특정 사용자의 권한을 가장하는 서비스를 설치하지 마십시오. 이로 인해 시스템이 다시 시작될 때 보안 문제, 암호 충돌 또는 구성 데이터 손실이 발생할 수 있습니다.

제거 중에 서비스를 삭제하려면 ServiceControl 테이블에 서비스에 대한 해당 레코드가 있어야 하며 msidbServiceControlEventUninstallDelete 플래그가 이벤트 열에 나타나야 합니다. 설치 관리자가 ServiceControl 테이블에 이 항목이 없으면 제거 중에 ServiceInstall 테이블의 서비스를 삭제하지 않습니다.

서비스를 보호하는 방법에 대한 자세한 내용은 MsiLockPermissionsEx 테이블을 참조하세요.

유효성 검사

ICE03
ICE06
ICE32
ICE45
ICE46
ICE66
ICE69