If you haven't read part 1 of this article yet, click HERE to read it first.

Creating Sample Service


Bellow are the steps required to create the sample .NET Service used throughout the remainder of this article:
  1. Startup Visual Studio, and select the "Visual Basic" node under "Project Types". Under Templates, select "Windows Service" and name the project "MyWinService".
  2. Under Solution Explorer, select the file name "Service1.vb", and change it to "MyWinService.vb" under Properties section.
  3. Open "MyWinService.vb" in design mode. Right-Click on the design area and choose "Add Installers". This will place two components called "ServiceProcessInstaller1" and "ServiceInstaller1" onto the design area.
  4. Select "ServiceInstaller1", change its name to "MyWinServiceInstaller". Also change the ServiceName from "Service1" to "MyWinService".
  5. Select "ServiceProcessInstaller1", and change its name to "MyWinServiceProcessInstaller".

Important Settings

The Code


By default, two Subroutines called "OnStart" and "OnStop" are created when you create a Windows Service. Here is what needs to be placed in each section of our Windows Service to get the sample service up and running:

Protected Overrides Sub OnStart(ByVal args() As String) 
	EventLog.WriteEntry("MyService Started") 
End Sub 

Protected Overrides Sub OnStop() 
	EventLog.WriteEntry("MyService Stopped") 
End Sub 

Protected Overrides Sub OnPause() 
	EventLog.WriteEntry("MyService Paused") 
End Sub 

Protected Overrides Sub OnContinue() 
	EventLog.WriteEntry("MyService Resumed") 
End Sub 

Protected Overrides Sub OnCustomCommand(ByVal command As Integer) 
	If command = 200 Then 
		EventLog.WriteEntry("Custom Command 200 invoked") 
	ElseIf command = 210 Then 
		EventLog.WriteEntry("Custom Command 210 invoked") 
	End If 
End Sub 

To build the service, simply click on "Build > Build MyWinService". This will create an executable file either in ".\bin\Release\" or ".bin\Debug" depending on if you compile it in Debug or Release mode.

Installing Windows Service

There are two ways to install a windows service:

  1. Using "InstallUtil.exe" for the correct .NET Framework Version.
  2. By Creating a "Setup and Deployment" project for your service.

When developing the windows service, it is a lot easier to use the Install Utility to install and uninstall your windows service. You do however have to keep track of the version of this utility corresponding to your development framework. For Visual Studio 2005, the .NET Framework 2.0 version of this utility will need to be used.

If you have several versions of the Visual Studio installed on the same machine, and are actively developing using all of them, you may have the following 2 versions of this tool. Please note that depending on the subversion of the framework you have installed the actual version folder name may be different:

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe

Here are the steps to follow in order to use this utility and install your service:

Screenshot - 081607_b1_i1_sm.gif

  • You will be prompted to enter a username and password for the service that looks like this. The username that you enter here can be a domain user, entered in the form "domain\username". Enter both your username and password and hit "OK" to run the utility:

    Screenshot - 081607_b1_i2.gif

  • Once the Utility is finished, you should see a screen output similar to the following:

    Screenshot - 081607_b1_i3_sm.gif

    The last step to running the service is to start it from the Service Control. To do this, navigate to "START > Control Panel > Administrative Tools > Services" and start the Service Controller Interface. Scroll down until you see the name "MyWinService". Select that service, Right-Click on it and choose "Properties".

    The two important Tabs that we care about are the "General" and "Log On" tabs. On the General Tab, you will see a combo box called "Startup type", with the options "Manual", "Automatic" and "Disabled". Manual option means that the service will not start when windows starts up, while Automatic means that the service DOES start up every time windows starts. Click on the Log On tab. Here you can change the user, under which the service runs. You should have the user you entered in the Install Utility showing on this screen at this point. If you would rather run the service under the local system user, you can select the "Local System Account" radio button. Click "Apply" to accept your changes, then click back on the General Tab. Start the service by clicking on the "Start" button on this tab (alternatively you can start the service directly from the Service Controller by right clicking on the name of it and choosing "Start" from the context menu provided).

    Event Log Entries

    By starting our custom made .NET Service, a new event log entry is made under the Application Log. To view the events of this log, go to "START > Control Panel > Administrative Tools > Event Viewer" and select the "Application" log section on the left menu of the Event Viewer.

    This concludes Part 2 of this article. More to come in Part 3.

    Pete Soheil
    DigiOz Multimedia
    http://www.digioz.com/