윈도우 서비스를 등록하면 시스템 시작 시 자동으로 실행되게 설정할 수 있다. 이는 특정 애플리케이션이 항상 실행되어야 할 때 유용하다.
윈도우 서비스 등록 방법 (3가지)
- 명령 프롬프트(CMD) sc 명령어
- PowerShell의 New-Service cmdlet
- NSSM
명령 프롬프트(CMD)에서 sc create 명령어 사용하기
sc는 Service Control의 약자로, Windows 서비스와 관련된 대부분의 작업을 처리할 수 있는 강력한 명령어 도구
sc create [서비스 이름] binPath= "[실행 파일 경로]"
[서비스 이름]: 시스템에서 서비스를 식별하는 데 사용될 고유한 이름. (예: MyCustomService)
[실행 파일 경로]: 서비스로 등록할 .exe 파일의 전체 경로입니다. 경로에 공백이 포함된 경우 반드시 큰따옴표(“)로 묶어야 한다.
주요 옵션과 함께 사용하는 예시
실제로 서비스를 등록할 때는 몇 가지 추가 옵션
- DisplayName: 서비스 관리자나 작업 관리자에 표시될 이름
- start: 서비스 시작 유형을 지정
auto
: 시스템 시작 시 자동으로 실행demand
: 수동으로 실행 (기본값)disabled
: 사용 안 함
- obj: 서비스를 실행할 계정을 지정합니다. (기본값: LocalSystem)
LocalSystem
: 시스템 최고 권한NT AUTHORITY\LocalService
: 네트워크 접근 권한이 없는 기본 사용자NT AUTHORITY\NetworkService
: 네트워크 접근 권한이 있는 기본 사용자- 기타 사용자 계정 (예:
.\UserName
)
- password:
obj
에서 지정한 계정의 비밀번호
실패

성공(관리자 권한으로 실행)


PowerShell에서 New-Service cmdlet 사용하기
New-Service -Name [서비스 이름] -BinaryPathName "[실행 파일 경로]"
- Name: 서비스의 고유 이름
- BinaryPathName: 서비스로 등록할 .exe 파일의 전체 경로
주요 옵션과 함께 사용하는 예시
옵션
- DisplayName: 서비스 관리자에 표시될 이름
- StartupType: 서비스 시작 유형을 지정
Automatic
: 자동으로 실행Manual
: 수동으로 실행Disabled
: 사용 안 함
- Credential: 서비스를 실행할 사용자 계정 정보를 지정
NSSM (Non-Sucking Service Manager) 사용
위 예시에서 nginx를 사용했지만 실제로 등록 후 시작하면 nginx는 실행이되지 않는다. 따라서 NSSM을 사용해야 한다.
사용 방법 예시
1. NSSM 다운로드: NSSM 공식 홈페이지에서 최신 버전을 다운로드하고 압축 해제
2. 명령 프롬프트 실행: 관리자 권한으로 명령 프롬프트(CMD) 또는 PowerShell을 실행하고, NSSM이 있는 폴더로 이동
3. 서비스 설치 GUI 실행: 아래 명령어를 입력하여 서비스 설치 창을 열 수 있음

nssm install nginx
위 명령어 입력하면 아래 서비스 설치창이 열림

4. 설정:
- Application 탭:
Path
: 실행할 서비스 파일의 전체 경로를 선택Startup directory
: 실행할 서비스가 설치된 폴더 경로를 지정
- Details 탭:
DisplayName
에 원하는 서비스 이름을 입력 - (선택) Shutdown 탭: 정상적인 종료를 위해
nginx -s stop
명령을 등록
5. 서비스 설치: [Install service] 버튼을 클릭
6. 서비스 시작: 아래 명령어나 서비스 관리 창(services.msc
)에서 서비스를 시작
// nssm이 설치된 경로에서
nssm start nginx
윈도우 서비스 제거하기
제거하면 서비스 목록에 보이지 않음 제거가 되더라도 보인다면 해당 서비스를 중지하지 않은 상태로 제거했을 수 있음, 이런 경우 중지하면 목록에서 사라짐
명령 프롬프트(CMD) 에서
제거하기 전 서비스는 중지된 상태이어야 함
// sc delete "test-nginx"
sc delete [서비스 이름]

PowerShell 에서
제거하기 전 서비스는 중지된 상태이어야 함
Remove-Service -Name "[서비스 이름]"
NSSM 에서
제거하기 전 서비스는 중지된 상태이어야 함
// nssm.exe 파일 경로에서
nssm remove [서비스 이름]

등록 후 서비스 관리
작업 | 명령 프롬프트 (sc) | PowerShell | NSSM |
시작 | sc start [서비스 이름] |
Start-Service -Name [서비스 이름] |
nssm start [서비스 이름] |
중지 | sc stop [서비스 이름] |
Stop-Service -Name [서비스 이름] |
nssm stop [서비스 이름] |
삭제 | sc delete [서비스 이름] |
Remove-Service -Name [서비스 이름] |
nssm remove [서비스 이름] |
상태 확인 | sc query [서비스 이름] |
Get-Service -Name [서비스 이름] |
nssm status [서비스 이름] |