과거 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(서비스 등록(설치)/삭제)
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” 입력)