.NET

닷넷(C#) 으로 Window Service 만들때 유의 사항

김모작자 2015. 3. 17. 14:22

아마 C++ 도 동일하다고 봄... (예전에 알고 있었으나 잊어먹은듯)

1. 보통 프로그램 시작시 디렉토리 경로는 프로그램이 위치하는 곳이나, Window Service 의 경우 C:\Windows\System32 등 시스템 경로가 된다. 경로가 다르기 때문에 추가 파일 등에 대응하기 위해서 경로를 실제로 변경하거나 Command-line parameter 등에 기록하거나 한다

나의 경우 log4net 의 설정을 xml 파일에 두고 사용하는데
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.xml"));
이렇게 해두면 콘솔 등의 보통 프로그램은 문제 없으나 윈도 서비스 사용시 system32 폴더에 log4net.xml 이 있지 않는 이상
로그 출력이 안되는 문제가 발생한다

그래서 프로그램 시작하자마자,
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
이 코드를 삽입해 시작하자 프로그램이 위치하는 경로를 현재 위치로 변경해 콘솔 프로그램과 같은 환경을 만들어준다.

2. 권한 문제

LOCAL SERVICE, LOCAL SYSTEM, NETWORK SERVICE 를 잘 골라서 사용하자