다음을 통해 공유


방법: ServiceController 구성 요소 인스턴스 만들기

업데이트: 2007년 11월

ServiceController 구성 요소를 사용하여 기존 서비스의 동작을 연결하고 제어할 수 있습니다. ServiceController 클래스의 인스턴스를 만들 때 인스턴스의 속성을 특정 Windows 서비스와 상호 작용하도록 설정합니다. 그러면 클래스를 사용하여 서비스를 시작, 중지 및 관리할 수 있습니다.

대개 관리 기능에 ServiceController를 사용합니다. 예를 들어, ServiceController 구성 요소 인스턴스를 통해 서비스로 사용자 지정 명령을 보내는 Windows 응용 프로그램 또는 ASP.NET 웹 응용 프로그램을 만들 수 있습니다. 서비스 제어 관리자는 사용자 지정 명령을 지원하지 않기 때문에 이 방법이 유용합니다.

ServiceController 구성 요소의 인스턴스를 만드는 데는 여러 가지 방법이 있습니다.

  • ServiceController 구성 요소의 인스턴스를 도구 상자의 구성 요소 탭에서 폼 또는 다른 디자이너로 끌어 옵니다.

  • 서버 탐색기에서 ServiceController 구성 요소를 디자이너 폼에 추가합니다.

  • 코드에서 ServiceController 클래스의 인스턴스를 만듭니다.

ServiceController의 인스턴스를 만든 다음 인스턴스에 두 속성(컴퓨터 이름과 제어할 서비스 이름)을 설정하여 인스턴스가 상호 작용할 서비스를 식별해야 합니다.

참고:

MachineName은 기본적으로 로컬 컴퓨터로 설정되어 있기 때문에 구성 요소 인스턴스를 다른 컴퓨터로 설정하는 경우에만 이를 변경합니다.

참고:

실제 설정이나 버전에 따라서 화면에 나타나는 대화 상자와 메뉴 명령이 도움말의 설명과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

서버 탐색기에서 ServiceController 구성 요소를 만들고 구성하려면

  1. 서버 탐색기의 목록에 원하는 서버가 없으면 추가합니다. 자세한 내용은 방법: 서버 탐색기/데이터베이스 탐색기 액세스 및 초기화를 참조하십시오.

  2. 서비스 노드를 확장한 다음 관리 작업을 수행할 서비스를 찾습니다.

  3. 서비스 이름을 마우스 오른쪽 단추로 클릭한 다음 디자이너에 추가를 클릭합니다.

    선택한 서비스와 상호 작용하도록 구성된 ServiceController 구성 요소가 프로젝트에 나타납니다.

도구 상자에서 ServiceController 구성 요소를 만들고 구성하려면

  1. 도구 상자의 구성 요소 탭에 액세스합니다.

  2. ServiceController 아이콘을 선택한 다음 폼 또는 구성 요소에 대한 디자이너 화면으로 끌어 옵니다.

  3. 다음 속성을 설정합니다.

    속성

    설정값

    MachineName

    서비스가 있는 컴퓨터 이름, 로컬 컴퓨터의 경우 "."

    ServiceName

    상호 작용할 서비스 이름

    팁:

    서버 탐색기를 사용하여 특정 서비스에 설정해야 하는 ServiceName을 알 수 있습니다. 서버 탐색기에서 원하는 서비스를 선택하면 속성 창에 해당 서비스에 대한 ServiceName이 나타납니다.

프로그래밍 방식으로 ServiceController 구성 요소를 만들고 구성하려면

  1. 코드에서 ServiceController 클래스의 인스턴스를 만듭니다.

  2. MachineNameServiceName 속성을 제어하고자 하는 서비스로 설정합니다.

    다음 예제는 로컬 컴퓨터에서 IIS Admin 서비스와 상호 작용하는 ServiceController 구성 요소를 만드는 방법을 보여 줍니다. 구성 요소는 컨트롤러와 관련된 서비스를 쿼리하여 서비스가 Stop 명령을 사용할 수 있는지 확인한 다음 사용할 수 있는 경우 명령을 발생시킵니다. 이 예제는 서비스를 시작, 중지 및 관리하는 여러 단추가 있는 폼을 포함하는 Windows 프로젝트의 일부입니다. 단추를 클릭할 때마다 조건을 확인하여 레이블 컨트롤에 상태 정보를 표시합니다.

    참고:

    이 샘플을 실행하기 전에 System.ServiceProcess.dll에 대한 참조를 추가하고 System.ServiceProcess 네임스페이스에 대한 Imports 또는 using 문을 포함시킵니다.

    Sub Main()
        Dim myController As _
           New System.ServiceProcess.ServiceController("IISAdmin")
    
        If myController.CanStop Then
            Debug.WriteLine(myController.ServiceName & " can be stopped.")
        Else
            Debug.WriteLine(myController.ServiceName & " cannot stop.")
        End If
    End Sub
    
     public static void Main(string[] args)
        {
            System.ServiceProcess.ServiceController myController =
               new System.ServiceProcess.ServiceController("IISAdmin");
            if (myController.CanStop)
            {
                System.Diagnostics.Debug.WriteLine(
                   myController.DisplayName + "  can be stopped.");
            }
            else
            {
                System.Diagnostics.Debug.WriteLine(
                   myController.DisplayName + "  cannot stop.");
            }
        }
    

참고 항목

작업

방법: 서비스에 대한 관리 작업 수행

방법: 서비스 목록 검색

개념

기존 서비스와 상호 작용 소개