컴퓨터잡담

윈도우 서비스 수동 등록 방법

by 디케 posted Jul 23, 2010
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

윈도우 서비스 수동 등록 방법

http://zzigregi.com/zbxe/tiptech/16621



윈도우 서비스를 등록하는 방법으로는 여러 가지가 있겠지만 여기서는 그 중 하나의 방법으로 수동으로 등록하는 방법에 대한 자료에 대해 포스팅 한다.

특히나 복수개의 상호 연관성 있는 서비스 프로그램을 제작 후  이것들을 시스템들을 설치할 때는 상황에 따라 해당 서비스들의 연관성(종속성)을 맺어줄 수 있다면 조금 더 바람직한 시스템 설정이 되지 않을까 싶다. 이럴때 아래의 명령어를 사용한다면 좀 더 쉽게 작업할 수 있을 것 같다.

sc enumdepend

 

 SC

서비스 컨트롤러 및 설치된 서비스와 통신합니다. SC.exe는 서비스에 대한 컨트롤 정보를 검색하고 설정합니다. SC.exe를 사용하여 서비스 프로그램을 테스트하고 디버깅할 수 있습니다. 레지스트리에 저장된 서비스 속성은 부팅할 때 서비스 응용 프로그램을 시작하는 방법 및 백그라운드 프로세스로 실행하는 방법을 제어하도록 설정할 수 있습니다. SC.exe 매개 변수는 서비스를 중단하거나 시작할 뿐 아니라 특정 서비스를 구성하고 서비스의 현재 상태를 검색할 수 있습니다. 다양한 SC.exe 명령을 불러오는 배치 파일을 만들어 서비스 시퀀스 시작 또는 종료를 자동화할 수 있습니다. SC.exe는 제어판에 있는 관리 도구 항목의 서비스와 비슷한 기능을 제공합니다.

명령 구문을 보려면 다음 sc 명령 중 하나를 클릭합니다.

sc boot

sc config

sc continue

sc control

sc create

sc delete

sc description

sc enumdepend

sc failure

sc getdisplayname

sc getkeyname

sc interrogate

sc lock

sc pause

sc qc

sc qdescription

sc qfailure

sc query

sc queryex

sc querylock

sc sdset

sc sdshow

sc start

sc stop

sc boot

마지막 부팅을 last-known-good 구성으로 저장해야 하는지 나타냅니다.

구문

Sc [ServerName] boot [{bad | OK}]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

[{bad | OK}]

마지막 부팅이 잘못되었는지 또는 last-known-good 구성으로 저장되었는지 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

예제

다음 예제는 sc boot 명령을 사용하는 방법을 보여 줍니다.

sc boot ok

sc boot bad

sc config

레지스트리나 서비스 컨트롤 관리자의 데이터베이스에서 서비스의 항목 값을 수정합니다.

구문

Sc [ServerName] config [ServiceName] [type= {own | share | kernel | filesys | rec | adapt | interacttype= {own | share}}] [start= {boot | system | auto | demand | disabled}] [error= {normal | severe | critical | ignore}] [binpath= BinaryPathName] [group= LoadOrderGroup] [tag= {yes | no}] [depend= dependencies] [obj= {AccountName | ObjectName}] [displayname= DisplayName] [password= Password]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

type= {own| share | kernel | filesys | rec| adapt| interacttype= {own | share}}

서비스 종류를 지정합니다.

설명

own

서비스가 자체 프로세스로 실행되므로 다른 서비스와 실행 파일을 공유하지 않습니다. 이것이 기본 설정입니다.

share

서비스가 공유 프로세스로 실행되므로 다른 서비스와 실행 파일을 공유합니다.

kernel

드라이버입니다.

filesys

파일 시스템 드라이버입니다.

rec

컴퓨터에서 사용되는 파일 시스템을 확인하는 파일 시스템 인식 드라이버입니다.

adapt

키보드, 마우스, 디스크 드라이브와 같은 하드웨어 항목을 확인하는 어댑터 드라이버입니다.

interact

서비스가 사용자의 입력을 받아 데스크톱과 상호 작용할 수 있습니다. 대화형 서비스는 LocalSystem 계정으로 실행해야 합니다. 이 서비스 종류는 type= own 또는 type= shared와 함께 사용해야 합니다(예: type= interact type= own). type= interact를 단독으로 사용하면 유효하지 않은 매개 변수 오류가 생성됩니다.

start= {boot | system | auto | demand | disabled}

서비스의 시작 유형을 지정합니다.

설명

boot

부팅 로더가 로드하는 장치 드라이버입니다.

system

커널을 초기화하는 동안 시작되는 장치 드라이버입니다.

auto

컴퓨터를 자동으로 다시 시작하거나 로그온한 사용자가 없어도 자동으로 컴퓨터를 실행하는 서비스입니다.

demand

수동으로 시작해야 하는 서비스입니다. start=를 지정하지 않는 경우 이것이 기본값입니다.

disabled

시작할 수 없는 서비스입니다. 사용할 수 없는 서비스를 시작하려면 시작 유형을 다른 값으로 변경합니다.

error= {normal | severe | critical | ignore}

부팅 중에 서비스가 시작되지 못하는 경우 오류의 심각도를 지정합니다.

설명

normal

오류가 기록되고 메시지 상자가 표시되어 서비스를 시작하지 못했음을 사용자에게 알립니다. 시작 프로세스를 계속합니다. 이것은 기본 설정입니다.

severe

가능한 경우 오류가 기록됩니다. 컴퓨터가 마지막으로 성공한 구성을 사용하여 다시 시작하도록 시도합니다. 이렇게 설정하면 컴퓨터를 다시 시작할 수 있지만 서비스는 여전히 실행할 수 없습니다.

critical

가능한 경우 오류가 기록됩니다. 컴퓨터가 마지막으로 성공한 구성을 사용하여 다시 시작하도록 시도합니다. 마지막으로 성공한 구성이 실패하면 시작도 실패하고 부팅 프로세스가 중지 오류와 함께 중단됩니다.

ignore

오류가 기록되고 시작 프로세스가 계속됩니다. 이벤트 로그에 오류를 기록할 뿐 사용자에게 알리지 않습니다.

binpath= BinaryPathName

서비스 이진 파일의 경로를 지정합니다.

group= LoadOrderGroup

이 서비스가 소속된 그룹의 이름을 지정합니다. 그룹 목록은 레지스트리의 HKLM\System\CurrentControlSet\Control\ServiceGroupOrder 하위 키에 저장됩니다. 기본값은 Null입니다.

tag= {yes | no}

CreateService 호출에서 TagID를 가져올 것인지 여부를 지정합니다. 태그는 부팅 시작 및 시스템 시작 드라이버에만 사용됩니다.

depend= dependencies

이 서비스 전에 시작해야 하는 서비스 또는 그룹의 이름을 지정합니다. 이름은 슬래시(/)로 구분합니다.

obj= {AccountName|ObjectName}

서비스를 실행할 계정의 이름을 지정하거나 드라이버를 실행할 Windows 드라이버 개체의 이름을 지정합니다. 기본값은 LocalSystem입니다.

displayname= DisplayName

사용자에게 서비스를 확인시키기 위해 사용자 인터페이스 프로그램에서 사용될 이름을 친숙하고 의미 있는 이름으로 지정합니다. 예를 들어 한 서비스의 하위 키 이름이 wuauserv인 경우 사용자가 사용하는 데 불편하므로 표시 이름을 자동으로 업데이트합니다.

password= Password

암호를 지정합니다. LocalSystem 계정 이외의 계정을 사용하는 경우 필요합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

매개 변수와 값 사이에 공백이 없으면 작업이 실패합니다. 예를 들어, type=own이 아니라 type= own입니다.

예제

다음 예제는 sc config 명령을 사용하는 방법을 보여 줍니다.

sc config NewService binpath= "ntsd -d c:\windows\system32\NewServ.exe"

sc continue

일시 중지된 서비를 다시 시작하기 위해 CONTINUE 컨트롤 요청을 서비스에 보냅니다.

구문

Sc [ServerName] continue [ServiceName]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

continue를 사용하면 일시 중지된 서비스를 다시 시작할 수 있습니다.

예제

다음 예제는 sc continue 명령을 사용하는 방법을 보여 줍니다.

sc continue tapisrv

sc control

CONTROL B를 서비스에 보냅니다.

구문

sc [ServerName] control [ServiceName] [{paramchange | netbindadd | netbindremove | netbindenable | netbinddisable| UserDefinedControlB}]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

{paramchange | netbindadd | netbindremove | netbindenable | netbinddisable | UserDefinedControlB}

서비스를 보낼 컨트롤을 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

sc create

레지스트리나 서비스 컨트롤 관리자의 데이터베이스에서 서비스의 하위 키와 항목 값을 만듭니다.

구문

Sc [ServerName] create [ServiceName] [type= {own | share | kernel | filesys | rec | adapt | interacttype= {own | share}}] [start= {boot | system | auto | demand | disabled}] [error= {normal | severe | critical | ignore}] [binpath= BinaryPathName] [group= LoadOrderGroup] [tag= {yes | no}] [depend= dependencies] [obj= {AccountName | ObjectName}] [displayname= DisplayName] [password= Password]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

type= {own| share | kernel | filesys | rec| adapt| interacttype= {own | share}}

서비스 종류를 지정합니다. 기본값은 type= own입니다.

설명

own

서비스가 자체 프로세스로 실행되므로 다른 서비스와 실행 파일을 공유하지 않습니다. 이것이 기본 설정입니다.

share

서비스가 공유 프로세스로 실행되므로 다른 서비스와 실행 파일을 공유합니다.

kernel

드라이버입니다.

filesys

파일 시스템 드라이버입니다.

rec

컴퓨터에서 사용되는 파일 시스템을 확인하는 파일 시스템 인식 드라이버입니다.

interact

서비스가 사용자의 입력을 받아 데스크톱과 상호 작용할 수 있습니다. 대화형 서비스는 LocalSystem 계정으로 실행해야 합니다. 이 서비스 종류는 type= own 또는 type= shared와 함께 사용해야 합니다(예: type= interact type= own). type= interact를 단독으로 사용하면 유효하지 않은 매개 변수 오류가 생성됩니다.

start= {boot | system | auto | demand | disabled}

서비스의 시작 유형을 지정합니다. 기본 시작은 start= demand입니다.

boot

부팅 로더가 로드하는 장치 드라이버입니다.

system

커널을 초기화하는 동안 시작되는 장치 드라이버입니다.

auto

컴퓨터를 자동으로 다시 시작하거나 로그온한 사용자가 없어도 자동으로 컴퓨터를 실행하는 서비스입니다.

demand

수동으로 시작해야 하는 서비스입니다. start=를 지정하지 않는 경우 이것이 기본값입니다.

disabled

시작할 수 없는 서비스입니다. 사용할 수 없는 서비스를 시작하려면 시작 유형을 다른 값으로 변경합니다.

error= {normal | severe | critical | ignore}

부팅 중에 서비스가 시작되지 못하는 경우 오류의 심각도를 지정합니다. 기본값은 error= normal입니다.

normal

오류가 기록되고 메시지 상자가 표시되어 서비스를 시작하지 못했음을 사용자에게 알립니다. 시작 프로세스를 계속합니다. 이것은 기본 설정입니다.

severe

가능한 경우 오류가 기록됩니다. 컴퓨터가 마지막으로 성공한 구성을 사용하여 다시 시작하도록 시도합니다. 이렇게 설정하면 컴퓨터를 다시 시작할 수 있지만 서비스는 여전히 실행할 수 없습니다.

critical

가능한 경우 오류가 기록됩니다. 컴퓨터가 마지막으로 성공한 구성을 사용하여 다시 시작하도록 시도합니다. 마지막으로 성공한 구성이 실패하면 시작도 실패하고 부팅 프로세스가 중지 오류와 함께 중단됩니다.

ignore

오류가 기록되고 시작 프로세스가 계속됩니다. 이벤트 로그에 오류를 기록할 뿐 사용자에게 알리지 않습니다.

binpath= BinaryPathName

서비스 이진 파일의 경로를 지정합니다. binpath=에 대한 기본값은 없으므로 이 문자열은 반드시 제공해야 합니다.

group= LoadOrderGroup

이 서비스가 소속된 그룹의 이름을 지정합니다. 그룹 목록은 레지스트리의 HKLM\System\CurrentControlSet\Control\ServiceGroupOrder 하위 키에 저장됩니다. 기본값은 Null입니다.

tag= {yes | no}

CreateService 호출에서 TagID를 가져올 것인지 여부를 지정합니다. 태그는 부팅 시작 및 시스템 시작 드라이버에만 사용됩니다.

depend= dependencies

이 서비스 전에 시작해야 하는 서비스 또는 그룹의 이름을 지정합니다. 이름은 슬래시(/)로 구분합니다.

obj= {AccountName|ObjectName}

서비스를 실행할 계정의 이름을 지정하거나 드라이버를 실행할 Windows 드라이버 개체의 이름을 지정합니다.

displayname= DisplayName

사용자에게 서비스를 확인시키기 위해 사용자 인터페이스 프로그램에서 사용되는 친숙한 이름을 지정합니다.

password= Password

암호를 지정합니다. LocalSystem 계정 이외의 계정을 사용하는 경우 필요합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

매개 변수와 값 사이에 공백이 없으면 작업이 실패합니다. 예를 들어, type=own이 아니라 type= own입니다.

예제

다음 예제는 sc create 명령을 사용하는 방법을 보여 줍니다.

sc \\myserver create NewService binpath= c:\windows\system32\NewServ.exe

sc create NewService binpath= c:\windows\system32\NewServ.exe type= share start= auto depend= "+TDI Netbios"

sc delete

레지스트리에서 서비스 하위 키를 삭제합니다. 서비스를 실행 중이거나 다른 프로세스에 서비스에 대해 열린 핸들이 있으면 서비스를 삭제하도록 표시됩니다.

구문

Sc [ServerName] delete [ServiceName]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

프로그램 추가/제거를 사용하여 DHCP, DNS 또는 기타 기본 제공 운영 체제 서비스를 삭제합니다. 프로그램 추가/제거는 서비스에 대한 레지스트리 하위 키만 삭제하지 않고 서비스를 설치 및 제거하고 서비스에 대한 모든 바로 가기를 삭제합니다.

예제

다음 예제는 sc delete 명령을 사용하는 방법을 보여 줍니다.

sc delete newserv

sc description

서비스에 대한 설명 문자열을 설정합니다.

구문

Sc [ServerName] description [ServiceName] [Description]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

Description

지정된 서비스에 대한 설명을 지정합니다. 문자열을 지정하지 않으면 서비스에 대한 설명은 변경되지 않습니다. 서비스 설명에 포함할 수 있는 문자 수는 제한이 없습니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

예제

다음 예제는 sc description 명령을 사용하는 방법을 보여 줍니다.

sc description newserv "Runs quality of service control."

sc enumdepend

지정된 서비스를 실행하지 않으면 실행할 수 없는 서비스를 표시합니다.

구문

Sc [ServerName] enumdepend [ServiceName] [BufferSize]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

BufferSize

열거 버퍼 크기(바이트)를 지정합니다. 기본값은 1,024바이트입니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

버퍼가 크기 않으면 enumdepend 작업은 종속성을 일부만 출력하고 모든 종속성을 출력하는 데 필요한 추가 버퍼 크기를 지정합니다. 출력이 끊기면 작업을 반환하고 버퍼 크기를 더 크게 지정합니다.

예제

다음 예제는 sc enumdepend 명령을 사용하는 방법을 보여 줍니다.

sc enumdepend rpcss 5690

sc enumdepend tapisrv

sc failure

서비스가 실패한 경우 동작을 지정합니다.

구문

Sc [ServerName] failure [ServiceName] [reset= ErrorFreePeriod] [reboot= BroadcastMessage] [command= CommandLine] [actions= FailureActionsAndDelayTime]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

reset= ErrorFreePeriod

실패가 없는 기간(초)을 지정합니다. 이 기간 이후 실패 횟수는 0으로 다시 설정됩니다. 이 매개 변수는 actions= 매개 변수와 함께 사용해야 합니다.

reboot= BroadcastMessage

서비스의 실패를 알리는 메시지를 지정합니다.

command= CommandLine

서비스가 실패한 경우 실행할 명령줄을 지정합니다. 실패한 경우 배치 또는 VBS 파일을 실행하는 방법에 대한 자세한 내용은 설명을 참조하십시오.

actions= FailureActionsAndDelayTime

실패 동작과 지연 시간을 슬래시(/)로 구분하여 밀리초로 지정합니다. 다음 동작은 유효합니다. run, restart  reboot. 이 매개 변수는 reset= 매개 변수와 함께 사용해야 합니다. 실패 시 아무 작업도 수행하지 않으려면 actions= ""을 사용합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

모든 서비스에서 실패 옵션을 변경할 수는 없습니다. 일부 서비스는 서비스 집합의 일부로 실행됩니다.

실패한 경우 배치 파일을 실행하려면 command= 매개 변수에 cmd.exeDrive:\FileName.bat을 지정합니다. 여기서 Drive:\FileName.bat은 배치 파일의 정규화된 이름입니다.

실패한 경우 VBS 파일을 실행하려면 command= 매개 변수에 cscript drive:\myscript.vbs를 지정합니다. 여기서 Drive:\myscript.vbs는 스크립트 파일의 정규화된 이름입니다.

actions= 매개 변수에 서비스가 실패한 경우 첫 번째, 두 번째, 세 번째로 사용될 세 가지 다른 동작을 지정할 수 있습니다.

매개 변수와 값 사이에 공백이 없으면 작업이 실패합니다. 예를 들어, type=own이 아니라 type= own입니다.

예제

다음 예제는 sc failure 명령을 사용하는 방법을 보여 줍니다.

sc failure msftpsvc reset= 30 actions= restart/5000

sc failure dfs reset= 60 command= c:\windows\services\restart_dfs.exe actions= run/5000

sc failure dfs reset= 60 actions= reboot/30000

sc failure dfs reset= 60 reboot= "The Distributed File System service has failed. Because of this, the computer will reboot in 30 seconds." actions= reboot/30000

sc failure myservice reset= 3600 reboot= "MyService crashed -- rebooting machine" command= "%windir%\MyServiceRecovery.exe" actions= restart/5000/run/10000/reboot/60000

sc getdisplayname

특별 서비스와 관련된 표시 이름을 가져옵니다.

구문

Sc [ServerName] getdisplayname [ServiceName] [BufferSize]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

BufferSize

버퍼 크기(바이트)를 지정합니다. 기본값은 1,024바이트입니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

예제

다음 예제는 sc getdisplayname 명령을 사용하는 방법을 보여 줍니다.

sc getdisplayname clipsrv

sc getdisplayname tapisrv

sc getdisplayname sharedaccess

sc getkeyname

표시 이름을 입력으로 사용하여 특별 서비스와 관련된 키 이름을 가져옵니다.

구문

sc [ServerName] getkeyname [ServiceDisplayName] [BufferSize]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceDisplayName

서비스 이름을 지정합니다.

BufferSize

버퍼 크기(바이트)를 지정합니다. 기본값은 1,024바이트입니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

ServiceDisplayName에 공백이 있으면 텍스트를 따옴표로 묶습니다(예: "Service Display Name").

예제

다음 예제는 sc getkeyname 명령을 사용하는 방법을 보여 줍니다.

sc getkeyname "remote procedure call (rpc)"

sc getkeyname "internet connection sharing"

sc getkeyname clipbook

sc interrogate

서비스에 INTERROGATE 컨트롤 요청을 보냅니다.

구문

Sc [ServerName] interrogate [ServiceName]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

INTERROGATE를 서비스에 보내면 서비스가 서비스 컨트롤 관리자를 사용하여 상태를 업데이트하도록 합니다.

예제

다음 예제는 sc interrogate 명령을 사용하는 방법을 보여 줍니다.

sc interrogate sharedaccess

sc interrogate rpcss

sc lock

서비스 컨트롤 관리자의 데이터베이스를 잠급니다.

구문

sc [ServerName] lock

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

서비스 컨트롤 관리자의 데이터베이스를 잠그면 서비스를 시작할 수 없습니다. 서비스가 중단된 후 다시 시작하지 않는지 확인하려면 이 매개 변수를 사용합니다. 이렇게 하면 중단되지 않고 서비스 삭제와 같은 동작을 실행할 수 있습니다.

lock 작업을 사용하면 서비스 제어 관리자의 데이터베이스가 잠기고 그 후에 u를 입력하여 데이터베이스의 잠금을 해제할 수 있습니다. 잠근 데이터베이스에서 프로세스를 중지할 수도 있습니다.

예제

다음 예제는 sc lock 명령을 사용하는 방법을 보여 줍니다.

sc lock

sc pause

서비스에 PAUSE 컨트롤 요청을 보냅니다.

구문

Sc [ServerName] pause [ServiceName]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

종료 전에 서비스를 일시 중지하려면 pause를 사용합니다.

모든 서비스를 일시 중지할 수 있는 것은 아닙니다.

일시 중지된 경우 모든 서비스가 같은 동작을 수행하지는 않습니다. 일부는 기존 클라이언트에서는 서비스를 수행하지만 새 클라이언트는 받아들이지 않습니다. 일부는 기존 클라이언트에 대한 서비스 수행을 멈추고 새 클라이언트도 받아들이지 않습니다.

예제

다음 예제는 sc pause 명령을 사용하는 방법을 보여 줍니다.

sc pause tapisrv

sc qc

서비스 구성 정보를 쿼리합니다.

구문

Sc [ServerName] qc [ServiceName] [BufferSize]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

BufferSize

버퍼 크기(바이트)를 지정합니다. 기본값은 1,024바이트입니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

qc 작업은 서비스에 대한 다음 정보를 표시합니다. SERVICE_NAME (서비스의 레지스트리 하위 키 이름), TYPE, ERROR_CONTROL, BINARY_PATH_NAME, LOAD_ORDER_GROUP, TAG, DISPLAY_NAME, DEPENDENCIES 및 SERVICE_START_NAME.

관리자는 SC를 사용하여 서비스의 이진 이름을 확인하고 명령줄에 다음을 입력하여 해당 서비스가 다른 서비스와 프로세스를 공유하는지 확인할 수 있습니다.

sc qcServiceName

SC는 MMC(Microsoft Management Console) 서비스 노드의 서비스를 시스템 모니터의 프로세스와 일치하도록 합니다. 이진 이름이 Services.exe이면 해당 서비스는 서비스 컨트롤러 프로세스를 공유합니다.

Services.exe가 모든 서비스를 시작합니다. 시스템 리소스를 보존하려면 Windows용으로 개발된 Win32 서비스 일부가 Services.exe 프로세스를 공유하도록 기록됩니다. 이 서비스는 시스템 모니터나 작업 관리자에 별도의 프로세스로 표시되지 않습니다. 여러 운영 서비스를 공유하는 서비스 호스트 프로세스인 Svchost.exe도 마찬가지입니다.

공급업체 Win32 서비스가 공유 프로세스로 구성될 수 있으므로 모든 Win32 서비스에 프로세스가 없을 수도 있습니다. SC는 이 서비스에 대한 구성 정보를 얻는 데 사용됩니다. 서비스가 다른 서비스와 프로세스를 공유하지 않는 경우 서비스를 실행 중이면 시스템 모니터에 서비스에 대한 프로세스가 있습니다.

SC는 Windows에 포함된 Services.exe보다 서비스에 대해 자세하고 정확한 정보를 제공하기 때문에 서비스 개발자에게 유용할 수 있습니다. Services.exe는 서비스가 실행 중인지, 중단되었는지, 일시 중지 상태인지 확인할 수 있습니다. 이 도구는 디버깅되어 문제없이 실행되는 응용 프로그램에는 적합하지만 개발 중인 서비스에 대해서는 잘못된 정보를 제공하는 경우가 있습니다. 예를 들어 시작하는 서비스는 실제로 실행 중이든 실행 중이 아니든 시작되었다고 표시됩니다.

SC는 모든 Windows 서비스 컨트롤 API(응용 프로그래밍 인터페이스) 기능을 호출합니다. 명령줄에서 매개 변수를 지정하여 이 기능으로 설정합니다.

SC를 사용하면 서비스 상태를 쿼리하고 상태 구조 필드에 저장된 값을 검색할 수 있습니다. Services.exe는 서비스의 완전한 상태를 제공할 수 없지만 SC는 마지막 검사점 번호와 대기 힌트뿐만 아니라 서비스의 정확한 상태를 보여 줍니다. 검사점은 프로그램이 응답을 중단하기 전에 초기화가 얼마나 진행되었는지 보여 주기 때문에 디버깅 도구로 사용할 수 있습니다. 또한 SC는 원격 컴퓨터의 이름을 지정하여 서비스 API 함수를 호출하거나 원격 컴퓨터에서 서비스 상태 구조를 볼 수 있게 합니다.

예제

다음 예제는 sc qc 명령을 사용하는 방법을 보여 줍니다.

sc qc \\myserver newsrvice

sc qc rpcss 248

sc qdescription

서비스에 대한 설명 문자열을 표시합니다.

구문

Sc [ServerName] qdescription [ServiceName] [BufferSize]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

BufferSize

버퍼 크기(바이트)를 지정합니다. 기본값은 1,024바이트입니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

예제

다음 예제는 sc qdescription 명령을 사용하는 방법을 보여 줍니다.

sc qdescription rpcss

sc qdescription rpcss 138

sc qfailure

지정한 서비스가 실패한 경우 수행할 동작을 표시합니다.

구문

Sc [ServerName] qfailure [ServiceName] [BufferSize]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

BufferSize

버퍼 크기(바이트)를 지정합니다. 기본값은 1,024바이트입니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

qfailure 작업은 서비스에 대한 다음 정보를 표시합니다. SERVICE_NAME(서비스의 레지스트리 하위 키 이름), RESET_PERIOD, REBOOT_MESSAGE, COMMAND_LINE, FAILURE_ACTIONS

예제

다음 예제는 sc qfailure 명령을 사용하는 방법을 보여 줍니다.

sc qfailure rpcss

sc qfailure rpcss 20

sc query

지정된 서비스, 드라이버, 서비스 종류 및 드라이버 종류에 대한 정보를 가져와 표시합니다.

구문

Sc [ServerName] query [ServiceName] [type= {driver | service | all}] [type= {own | share | interact | kernel | filesys | rec | adapt}] [state= {active | inactive | all}] [bufsize= BufferSize] [ri= ResumeIndex] [group= GroupName]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다. 이 query 매개 변수는 ServerName이외의 query 매개 변수와는 함께 사용되지 않습니다.

type= {driver | service | all}

열거할 항목을 지정합니다. 기본 종류는 service입니다.

설명

driver

드라이버만 열거하도록 지정합니다.

service

서비스만 열거하도록 지정합니다.

all

드라이버 및 서비스를 모두 열거하도록 지정합니다.

type= {own | share | interact | kernel | filesys | rec | adapt}

열거할 서비스 종류 또는 드라이버 종류를 지정합니다.

설명

own

서비스가 자체 프로세스로 실행되므로 다른 서비스와 실행 파일을 공유하지 않습니다. 이것이 기본 설정입니다.

share

서비스가 공유 프로세스로 실행되므로 다른 서비스와 실행 파일을 공유합니다.

interact

서비스가 사용자의 입력을 받아 데스크톱과 상호 작용할 수 있습니다. 대화형 서비스는 LocalSystem 계정으로 실행해야 합니다.

kernel

드라이버입니다.

filesys

파일 시스템 드라이버입니다.

state= {active | inactive | all}

열거할 서비스의 시작 상태를 지정합니다. 기본 상태는 active입니다.

설명

active

활성 서비스를 모두 지정합니다.

inactive

일시 중지되거나 중지된 서비스를 모두 지정합니다.

all

모든 서비스를 지정합니다.

bufsize= BufferSize

열거 버퍼 크기(바이트)를 지정합니다. 기본 크기는 1,024바이트입니다. 쿼리의 표시 결과가 1,024바이트를 초과하면 열거 버퍼의 크기를 증가시킵니다.

ri= ResumeIndex

열거를 시작하거나 다시 시작할 인덱스 번호를 지정합니다. 기본값은 0입니다. 쿼리에서 기본 버퍼가 표시할 수 있는 것보다 많은 정보를 반환하는 경우 이 매개 변수를 bufsize= 매개 변수와 함께 사용합니다.

group= GroupName

열거할 서비스 그룹을 지정합니다. 기본값은 모든 그룹입니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

매개 변수와 값 사이에 공백이 없으면 작업이 실패합니다. 예를 들어, type=own이 아니라 type= own입니다.

query는 서비스에 대한 다음의 정보를 표시합니다. SERVICE_NAME(서비스 레지스트리 하위 키 이름), TYPE, STATE(사용할 수 없는 상태와 함께 표시), WIN32_EXIT_B, SERVICE_EXIT_B, CHECKPOINT, WAIT_HINT

type= 매개 변수는 경우에 따라 두 번 사용할 수도 있습니다. 처음 나타나는 type= 매개 변수는 서비스를 쿼리할 것인지 드라이버를 쿼리할 것인지 아니면 모두 쿼리할 것인지를 지정합니다. 두 번째로 나타나는 type= 매개 변수는 쿼리의 범위를 더 좁히기 위해 create 작업으로부터 유형을 지정합니다.

query 명령에서 결과를 표시할 때 열거 버퍼 크기를 초과하면 다음과 같은 메시지가 표시됩니다.

Enum: more data, need 1822 bytes start resume at index 79

나머지 query 정보를 표시하려면 bufsize=를 바이트 수로 설정하고 ri=를 지정한 인덱스로 설정하여 query를 다시 실행합니다. 예를 들어 명령줄에 다음 내용을 입력하면 나머지 출력을 표시할 수 있습니다.

sc query bufsize= 1822 ri= 79

예제

다음 예제는 sc query 명령을 사용하는 방법을 보여 줍니다.

sc query

sc query messenger

sc query type= driver

sc query type= service

sc query state= all

sc query bufsize= 50

sc query ri= 14

sc query type= service type= interact

sc query type= driver group= ndis

sc queryex

지정된 서비스, 드라이버, 서비스 종류 및 드라이버 종류에 대한 확장된 정보를 가져와 표시합니다.

구문

Sc [ServerName] queryex [type= {driver | service | all}] [type= {own | share | interact | kernel | filesys | rec | adapt}] [state= {active | inactive | all}] [bufsize= BufferSize] [ri= ResumeIndex][group= GroupName]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다. 이 queryex 매개 변수는 ServerName이외의 queryex 매개 변수와는 함께 사용되지 않습니다.

type= {driver | service | all}

열거할 항목을 지정합니다. 기본 종류는 service입니다.

설명

driver

드라이버만 열거하도록 지정합니다.

service

서비스만 열거하도록 지정합니다.

all

드라이버 및 서비스를 모두 열거하도록 지정합니다.

type= {own | share | interact | kernel | filesys | rec | adapt}

열거할 서비스 종류 또는 드라이버 종류를 지정합니다.

설명

own

서비스가 자체 프로세스로 실행되므로 다른 서비스와 실행 파일을 공유하지 않습니다. 이것이 기본 설정입니다.

share

서비스가 공유 프로세스로 실행되므로 다른 서비스와 실행 파일을 공유합니다.

interact

서비스가 사용자의 입력을 받아 데스크톱과 상호 작용할 수 있습니다. 대화형 서비스는 LocalSystem 계정으로 실행해야 합니다.

kernel

드라이버입니다.

filesys

파일 시스템 드라이버입니다.

state= {active | inactive | all}

열거할 서비스의 시작 상태를 지정합니다. 기본 상태는 active입니다.

설명

active

활성 서비스를 모두 지정합니다.

inactive

일시 중지되거나 중지된 서비스를 모두 지정합니다.

all

모든 서비스를 지정합니다.

bufsize= BufferSize

열거 버퍼 크기(바이트)를 지정합니다. 기본 크기는 1,024바이트입니다.

ri= ResumeIndex

열거를 시작하거나 다시 시작할 인덱스 번호를 지정합니다. 기본 설정은 0입니다.

group= GroupName

열거할 서비스 그룹을 지정합니다. 기본값은 모든 그룹입니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

매개 변수와 값 사이에 공백이 없으면 작업이 실패합니다. 예를 들어, type=own이 아니라 type= own입니다.

queryex 작업은 서비스에 대한 다음 정보를 표시합니다. SERVICE_NAME(서비스 레지스트리 하위 키 이름), TYPE, STATE(사용할 수 없는 상태와 함께 표시), WIN32_EXIT_B, SERVICE_EXIT_B, CHECKPOINT, WAIT_HINT, PID, FLAGS

type= 매개 변수는 경우에 따라 두 번 사용할 수도 있습니다. 처음 나타나는 type= 매개 변수는 서비스를 쿼리할 것인지 드라이버를 쿼리할 것인지 아니면 모두 쿼리할 것인지를 지정합니다. 두 번째로 나타나는 type= 매개 변수는 쿼리의 범위를 더 좁히기 위해 create 작업으로부터 유형을 지정합니다.

queryex 명령으로 표시되는 결과가 열거 버퍼 크기를 초과하면 다음과 같은 메시지가 표시됩니다.

Enum: more data, need 2130 bytes start resume at index 75

나머지 queryex 정보를 표시하려면 bufsize=를 바이트 수로 설정하고, ri=를 지정한 인덱스로 설정하여 queryex를 다시 실행합니다. 예를 들어 명령줄에 다음 내용을 입력하면 나머지 출력을 표시할 수 있습니다.

sc queryex bufsize= 2130 ri= 75

예제

다음 예제는 sc queryex 명령을 사용하는 방법을 보여 줍니다.

sc queryex messenger

sc queryex group= ""

sc querylock

서비스 컨트롤 관리자의 데이터베이스 잠금 상태를 쿼리하고 표시합니다.

구문

Sc [ServerName] querylock

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

sc sdset

SDDL(Service Descriptor Definition Language)을 사용하여 서비스의 보안 설명자를 설정합니다.

구문

Sc [ServerName] sdset ServiceName ServiceSecurityDescriptor

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

ServiceSecurityDescriptor

SDDL에서 서비스의 서비스 설명자를 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

SDDL에 대한 자세한 내용은 Microsoft 웹 사이트의 Security Descriptor Definition Language를 참조하십시오.

sc sdshow

SDDL을 사용하여 서비스의 보안 설명자를 표시합니다.

구문

Sc [ServerName] sdshow ServiceName

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

설명

SDDL에 대한 자세한 내용은 Microsoft 웹 사이트의 Security Descriptor Definition Language를 참조하십시오.

예제

sc sdshow rpcss

sc start

서비스 실행을 시작합니다.

구문

Sc [ServerName] start ServiceName [ServiceArguments]

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

ServiceArguments

서비스가 시작되도록 통과시키는 서비스 인수를 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

예제

다음 예제는 sc start 명령을 사용하는 방법을 보여 줍니다.

sc start tapisrv

sc stop

서비스에 STOP 컨트롤 요청을 보냅니다.

구문

Sc [ServerName] stop ServiceName

매개 변수

ServerName

서비스가 있는 원격 서버의 이름을 지정합니다. 이름은 UNC(범용 명명 규칙) 형식("\\myserver")을 사용해야 합니다. SC.exe를 로컬에서 실행하려면 이 매개 변수를 무시합니다.

ServiceName

getkeyname 작업이 반환한 서비스 이름을 지정합니다.

/?

명령 프롬프트에서 도움말을 표시합니다.

주의

레지스트리를 잘못 편집하면 시스템에 심각한 손상을 줄 수 있습니다. 레지스트리를 변경하기 전에 컴퓨터의 중요한 데이터를 백업해야 합니다.

설명

모든 서비스를 중지할 수 있는 것은 아닙니다.

예제

다음 예제는 sc stop 명령을 사용하는 방법을 보여 줍니다.

sc stop tapisrv

서식 범례

서식의미

기울임꼴

사용자가 입력해야 하는 정보

굵게

사용자가 표시된 대로 정확히 입력해야 하는 요소

줄임표(...)

명령줄에서 여러 번 반복할 수 있는 매개 변수

대괄호([])로 묶음

옵션 항목

중괄호({})로 묶음, 선택 사항은 파이프(|)로 구분. 예: {even|odd}

사용자가 하나만 선택해야 하는 선택 사항 집합

Courier font

코드 또는 프로그램 출력