닷넷에서 윈도우 서비스를 만들고 제어하기
이 데모에서는 간단한 윈도우 서비스를 C# 으로 작성할 것이고, 서비스를
설치한 후 그 서비스를 시작하고 중단해 보겠습니다.
* 서비스
생성
VisualStudio에서 윈도우 서비스
프로젝트를 생성하면 비주얼스튜디오의 코드 제네레이터는 System.ServiceProcess.ServiceBase 으로 부터 파생된 클래스를 하나
만들어줍니다. 이 부모 클래스에는 OnStart(), OnStop(), OnPause(), OnContinue() 와 같은 서비스의
시작과 중단에 관련된 함수들이 들어있습니다.
* 코드는 아래와
같이 간단하게 구성하였습니다.
protected override void OnStart(string[] args)
{
// 파일을 엽니다. 기본 디렉토리는 "C:\windows\System32\"
file = new StreamWriter( new FileStream("ServiceTest.log", System.IO.FileMode.Append ) );
this.file.WriteLine("서비스 시작");
this.file.Flush();
}
protected override void OnStop()
{
this.file.WriteLine("서비스 중단");
this.file.Flush();
this.file.Close();
* 인스톨 클래스
생성
이제는 인스톨 클래스를 하나 생성해 보도록 하겠습니다. 이 인스톨 클래스는 서비스를 인스톨 하기위한 모든 정보가 들어가게 됩니다. 따라서 서비스를 설치하려면 반드시 이 클래스를 생성하셔야 합니다. 생성법은 비주얼 스튜디오의 현제 프로젝트 오른쪽클릭 -> 추가 -> 클래스를 하시면 위와 같은 그림이 나옵니다.
생성을 하셨다면 using System.ServiceProcess; 라는 네임스페이스를 추가해준후 생성자에 아래와 같은 코드를 추가시켜 줍니다.
ServiceProcessInstaller spi = new ServiceProcessInstaller();
si.ServiceName = "FileManager"; // 이 항목은 반드시 실제 서비스 이름과 일치해야됨
si.DisplayName = "우리나라"; // 이 항목이 서비스 메니저에서 실제로 보여지는 항목
this.Installers.Add(si);
spi.Account = System.ServiceProcess.ServiceAccount.LocalSystem; // 로컬시스템 계정으로 실행
spi.Password = null;
spi.Username = null;
this.Installers.Add(spi);
설명은 주석으로 대신 하겠습니다.
"installutil.exe /u C:\project\WindowsService1\bin\WindowsService1.exe" 제거
다음은 Installutil 이라는 콘솔프로그램으로 서비스를 실제로 설치하셔야 합니다.
혹시 설치하던
도중 installutil.exe 파일을 찾을 수 없다고 나오면 아래의 경로에 그 파일이
있으므로 이를 시스템 환경변수 PATH 에 등록시켜 주면 됩니다.








