C#에서 Windows Service 설치 프로세스 구현

개요



Windows Serivice를 과거에 C++로 개발했을 때는,
설치 프로세스도 구현했습니다.

C#에서 Windows Service 개발에서는 템플릿이 있으며,
서비스 자체는 매우 쉽게 만들 수 있지만,
왠지 템플릿에는 설치 처리는 구현되어 있지 않아서.
이번에는 그 처리를 구현한 이야기.

할 일



템플릿에서 생성된 코드에서 변경한 사항을 설명합니다.

・Main 함수에 인수를 추가해, 기동시 인수로의 분기를 작성
· 기동시 인수로 「install」이 지정되었을 경우에, 설치 처리를 실행하도록 한다.
※※XXXXXXXXService가 개발하는 서비스의 클래스명
설치 처리는 실행 파일명을 취득하고
ManagedInstallerClass 클래스의 InstallHelper 함수를 호출하기만 하면 됩니다.

Program.cs

namespace XXXXXXXXService
{
    static class Program
    {
        static void Main(string[] args)
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
                        new XXXXXXXXService()
            };

            switch (args[0])
            {
                case "install":
                    string[] args = { System.Reflection.Assembly.GetExecutingAssembly().Location };
                    ManagedInstallerClass.InstallHelper(args);
                    break;

                default:
                    ServiceBase.Run(ServicesToRun);
                    break;
            }
        }
    }
}

아, Program.cs에 이하도 추기해 주세요.

Program.cs
using System.Configuration.Install;

시작시 인수에 install을 지정하여 실행해보십시오.
※관리자 권한으로 실행해 주세요.
또, Visual Studio로부터 실행할 때는, Visual Studio를 관리자 권한으로 실행해 주세요.

그러면 다음과 같은 화면이 표시됩니다.


이번에는 관리자 권한이 있는 사용자 이름과 비밀번호를 입력했는데,
여기에 주의점이 있습니다.

유저명은 선두에 컴퓨터명+¥마크를 붙일 필요가 있습니다.
예를 들어 컴퓨터 이름이 aaa이고 사용자 이름이 bbb이면,
 aaa¥bbb
를 사용자 이름에 입력합니다.

컴퓨터 이름은 설정 -> 시스템 -> 버전 정보를 통해 확인할 수 있습니다.


이 소스에서는, 이미 인스톨되고 있는지의 확인 처리나, 에러가 되었을 때의 처리는 기재하고 있지 않기 때문에,
필요에 따라 구현하십시오.

좋은 웹페이지 즐겨찾기