Server/Windows

[Windows Service] Console.exe Windows Service 등록

DungDung.dev 2023. 12. 11. 19:06

 

 과거 C# .NET 6.0으로 제작한 콘솔을 Windosw Service에 올리는 과정을 게시글로 담아봤습니다.

 

  • 환경 : Windows 11
  • 발생 오류 : windows service error 1053
  • 해결 방안 : 윈도우에서 지원하는 프로그램으로 서비스 등록 및 실행

 

 

1. Console 프로그램을 Release 모드로 게시 후 dll을 포함한 게시 파일을 원하는 경로에 백업합니다.

 

 

2. console windows service helper.zip 파일을 다운로드 받고 압축 해제합니다.

  • srvany.exe(서비스 관리자와의 통신/제어 처리를 하여 응용프로그램을 서비스로 실행 가능하게 함)
  • instsrv.exe(서비스 등록(설치)/삭제)

console windows service helper.zip
0.01MB

 

 

3. srvany.exe는 콘솔 실행 파일과 같은 폴더에 위치, instsrv.exe는 “C:\Windows\System32”에 위치시킵니다.

 

 

4. 명령 프롬프트를 관리자 권한으로 실행 후 아래 명령어를 입력하여 서비스를 등록합니다.

instsrv "Service Name" ...\srvany.exe(srvany.exe의 전체 경로)

 

  • 성공 시 아래와 같이 출력됩니다.
    CreateService SUCCESS at creating:
    
    Service Name
    
    You must now go to the Registry and the Services applet in the
    Control Panel and edit them as per the instructions.​​

 

 

 

 

5. 레지스트리 편집기 (Window + R → regedit)를 열어 “\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\” 경로에서 등록한 서비스를 찾습니다.

 

 

 

6. 서비스 우클릭 → 새로 만들기 → 키 생성 → Parameters 를 클릭합니다.

 

7. 오른쪽 창에서 새로 만들기 → 문자열 값 AppDirectory, Application, AppParameters 생성합니다.

 

 

8. AppDirectory → 우클릭 → 수정 → 문자열 편집 → 값 데이터 → console.exe 폴더 경로 입력합니다.

 

 

9. Application → …… → console.exe 포함 전체 경로 입력합니다.

 

 

10. 서비스 (Windows + R → services.msc)를 열어 등록한 서비스를 찾고 우클릭 → 속성 → 로그온 → ‘서비스와 데스크톱 상호 작용 허용’ 체크합니다.

 

 

 

11. 서비스를 시작시킵니다. (서비스 우클릭 후 시작 or 명령 프롬프트에서 sc start “Service Name” 입력)