Share via


How to: Create ServiceController Component Instances 

You can use the ServiceController component to connect to and control the behavior of existing services. When you create an instance of the ServiceController class, you set its properties so that it interacts with a specific Windows service. You can then use the class to start, stop, and otherwise manipulate the service.

You will most likely use a ServiceController in an administrative capacity. For example, you might create a Windows or ASP.NET Web application that sends custom commands to a service through a ServiceController component instance. This would be useful because the Services Control Manager does not support custom commands.

There are several ways you can create an instance of the ServiceController component:

  • You can drag an instance of the ServiceController component from the Components tab of the Toolbox to a form or other designer.

  • You can add a ServiceController component to your designer from Server Explorer.

  • You can create an instance of the ServiceController class in code.

After you create an instance of ServiceController, you must set two properties on it to identify the service with which it interacts: the computer name and the name of the service you want to control.

NoteNote

By default, MachineName is set to the local computer, so you do not need to change it unless you want to set the component instance to point to another computer.

NoteNote

The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. To change your settings, choose Import and Export Settings on the Tools menu. For more information, see Visual Studio Settings.

To create and configure a ServiceController component from Server Explorer

  1. In Server Explorer, add the server you want if it is not already listed. For more information, see How to: Access and Initialize Server Explorer/Database Explorer.

  2. Expand the Services node, and then locate the service on which you want to perform administrative tasks.

  3. Right-click the name of the service, and click Add to Designer.

    A ServiceController component appears in your project, configured to interact with the selected service.

To create and configure a ServiceController component from the Toolbox

  1. Access the Components tab of the Toolbox.

  2. Select the ServiceController icon and drag it to the designer surface for your form or component.

  3. Set the following properties.

    Property Setting

    MachineName

    The name of the computer on which the service exists, or "." for the local computer.

    ServiceName

    The name of the service with which you want to interact.

    NoteTip

    You can use Server Explorer to see what the ServiceName should be set to for any given service. Select the service in which you're interested in Server Explorer, and the ServiceName for it appears in the Properties window.

To programmatically create and configure a ServiceController component

  1. Create an instance of the ServiceController class in your code.

  2. Set the MachineName and ServiceName properties to indicate the service you want to control.

    The following example shows how to create a ServiceController component that interacts with the IIS Admin service on the local computer. The component then queries the service associated with the controller to determine if it can accept Stop commands, and if so, issues the command. This example is part of a Windows project in which a form with various buttons is used to start, stop, and otherwise manipulate the service. Each time a button is clicked, the condition is evaluated and status information is displayed in a label control.

    NoteNote

    Before these samples will run, you must add a reference to System.ServiceProcess.dll and include an Imports or using statement for the System.ServiceProcess namespace.

    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.");
        }
    }
    
    public static void main() {
       System.ServiceProcess.ServiceController myController =  
          new System.ServiceProcess.ServiceController("IISAdmin");
       if (myController.get_CanStop()) 
       {
          System.Diagnostics.Debug.WriteLine(
             (myController.get_DisplayName() + "  can be stopped."));
       }
       else {
          System.Diagnostics.Debug.WriteLine(
             (myController.get_DisplayName() + "  cannot stop."));
       }
    }
    

See Also

Tasks

How to: Perform Administrative Tasks on Services
How to: Retrieve Lists of Services

Concepts

Introduction to Communicating with Existing Services