실행 파일에서 Windows 서비스 생성


답변:


460

실행 파일에서 Windows 서비스를 만들려면 다음을 사용하십시오 sc.exe.

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

실제 exe경로 는 따옴표로 묶어야 하며 뒤에 공백이 있어야합니다 binPath=.

sc명령 에 대한 자세한 내용 은 Microsoft KB251192에서 찾을 수 있습니다 .

실행 파일에 대해서만 작동하지 않습니다. 실행 파일은 Windows 서비스 여야합니다 ( 예 : ServiceMain 구현 ). 비 서비스 실행 파일을 서비스로 등록하면 서비스를 시작하려고 할 때 다음 오류가 발생합니다.

오류 1053 : 서비스가 시작 또는 제어 요청에 적시에 응답하지 않았습니다.

서비스가 아닌 임의의 실행 파일로 Windows 서비스를 만들 수있는 도구가 있습니다. 이러한 도구의 예는 다른 대답을 참조하십시오.


11
이 명령이 작동하려면 관리자 권한으로 명령 프롬프트를 실행해야합니다.
Jeutnarg

2
경로는 정규화 된 경로 여야합니다. 상대 경로를 사용하여 서비스를 시작할 수 없습니다.
RunOfTheShipe

4
binpath=실행 창을 큰 따옴표로 둘러싼 후의 공백 은 적어도 창 10에서는 완전히 잘못되었습니다. 경로에 공백과 같은 특수 문자가 포함 된 경우에만 인용이 필요합니다. 또한 대소 문자 구분 (소문자 / 대문자 / 대소 문자 혼합)은 변수 이름의 어느 곳에서도 중요하지 않으며 displayname="my service"명령 줄을 전달하는 동안 서비스를 만드는 동안 첫 번째 행 ( Name) 으로 표시하는 또 다른 장점 services.msc입니다.

2
그 이후의 공간 binPath=은 Windows 7에서는 필요했지만 Windows 10에서는 필요하지 않았습니다
datchung

242

NSSM ( non- Sucking Service Manager )을 사용하여 .BAT 또는 .EXE 파일을 서비스로 실행하십시오.

http://nssm.cc/

  • 1 단계 : NSSM 다운로드
  • 2 단계 :nssm.exe install [serviceName]
  • 3 단계 : 실행 파일을 찾는 데 사용할 GUI가 열립니다.

6
최고의 서비스 관리자. NSSM을 사용하여 PlexWatch를 서비스로 설치하도록했습니다.
명령적인

2
이 세트는 영원히 서비스입니까? Windows가 시작될 때마다 서비스가 시작됩니까? 또한 사용자 상호 작용없이 어떻게 할 수 있습니까? 일종의 스크립트 또는 코드?
John Demetriou

9
이것은 절대적으로 훌륭합니다. 첫 번째 답변 대신이 답변을 수락 할 수 있기를 바랍니다. :-(
German Latorre

2
Dropbox를 서버에서 서비스로 실행할 수 있습니다. 절대 빠지지 않는 도구입니다!
Barry Guvenkaya

1
exe 파일은 Windows 서비스 프로젝트 여야합니까, nssm과 함께 사용할 수 있습니까 아니면 일반 exe 파일 일 수 있습니까? 명령 프롬프트 등
Sanjeev

92

(케빈 통) 답변 연장.

1 단계 : nssm-2.24.zip 다운로드 및 압축 해제

2 단계 : 명령 행 유형에서 :

C:\> nssm.exe install [servicename]

아래와 같이 GUI (예 : UT2003 서버)를 연 다음 간단히 찾아보십시오 : yourapplication.exe

여기에 이미지 설명을 입력하십시오

https://nssm.cc/usage 에 대한 자세한 정보


4
올바른 구문 nssm.exe install [serviceName]. 이 솔루션은 작동하지만 GUI 응용 프로그램이 있으면 Win Serever2003에서 작동하지 않습니다. 나중에 제거하려면nssm.exe remove [youservicename]
Hammad Khan

1
nginx에 대한 참조는 서비스로 실행하려는 특정 프로그램이기 때문에 가정합니다. 위의 hmd의 의견을 볼 때까지 nginx가 설치 또는 무언가에 필요한 종속성이라는 것을 암시하여 도움을 주려고한다고 생각했지만 GUI에서는 nginx를 설치하지 않은 것처럼 보이며 Unreal Tournament를 설치하고 있습니다 섬기는 사람? 예제가 일관성이없고 오해의 소지가 있음을 지적하기 만하면됩니다. 간단한 "서비스로 nginx를 설치하려고한다면 다음과 같이 보일 것입니다."
flutefreak7

@ flutefreak7 예 nginx는 필요하지 않으며 오도의 소지가 있습니다. 이 명령은 명령 없이도 작동합니다. 명령 프롬프트에서 서비스 이름을 제공하려는 경우 선택적 매개 변수입니다.
Hammad Khan

1
nssm을 사용하려고하면 Windows Forms가 실행 중이지만 양식이 표시되지 않습니다 ... 왜?
Radenko Zec

응용 프로그램을 Windows 서비스로 실행하며 대부분 백엔드 용입니다. 다른 루트 / 관리자 사용자 이름으로 실행 중일 수도 있습니다. 확인해야합니다. 또한 더 많은 정보는 여기에서 확인할 수 있습니다 : nssm.cc/usage

16

기존의 많은 답변에는 설치시 사람의 개입이 포함됩니다. 오류가 발생하기 쉬운 프로세스 일 수 있습니다. 많은 실행 파일을 서비스로 설치하려는 경우 마지막으로 할 일은 설치시 수동으로 수행하는 것입니다.

위에서 설명한 시나리오 를 위해 실행 파일을 서비스로 설치하는 명령 줄 도구 인 serman을 만들었습니다 . 쓰기 (및 한 번만 쓰기)는 실행 파일과 함께 간단한 서비스 구성 파일입니다. 운영

serman install <path_to_config_file>

서비스를 설치합니다. stdout그리고 stderr모두 기록됩니다. 자세한 내용은 프로젝트 웹 사이트를 참조하십시오 .

작동하는 구성 파일은 아래와 같이 매우 간단합니다. 그러나 그것은 또한 많은 유용한 기능을 가지고 <env><persistent_env>아래를.

<service>
  <id>hello</id>
  <name>hello</name>
  <description>This service runs the hello application</description>

  <executable>node.exe</executable>

  <!-- 
       {{dir}} will be expanded to the containing directory of your 
       config file, which is normally where your executable locates 
   -->
  <arguments>"{{dir}}\hello.js"</arguments>

  <logmode>rotate</logmode>

  <!-- OPTIONAL FEATURE:
       NODE_ENV=production will be an environment variable 
       available to your application, but not visible outside 
       of your application
   -->
  <env name="NODE_ENV" value="production"/>

  <!-- OPTIONAL FEATURE:
       FOO_SERVICE_PORT=8989 will be persisted as an environment
       variable to the system.
   -->
  <persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>

9

이 추가 기능은 유용합니다. 관리자 로 실행해야합니다.

sc create  <service_name> binpath=<binary_path>
sc stop    <service_name>
sc queryex <service_name>
sc delete  <service_name>

서비스 이름에 공백이 있으면 "따옴표"로 묶으십시오.


INSTALL 명령 이나 My Win 2003 sc.exe 5.2.3790.3959 또는 M $ F1
user6698332

1
"install"대신 "create"를 사용하십시오. sc create <service_name> binpath= <binary_path>
CSquared

4

나는 그것을 위해 좋은 제품을 테스트했다 : AlwaysUp . 무료는 아니지만 시험 기간이 30 일이므로 시험해 볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.