Creating a Windows Service in VB.NET | CodeGuru

Creating a Windows Service in VB.NET

Environment: .NET, Visual Basic Introduction You want to write an application that constantly monitors some files, creates a log, or whatever, and one that ran constantly in the background while the machine is busy doing something else. The best way to do this was to run a Windows application continuously or at a regular interval […]

Written By
CodeGuru Staff
CodeGuru Staff
Nov 20, 2002
5 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

Environment: .NET, Visual Basic

Introduction

You want to write an application that constantly monitors some files, creates a log, or whatever, and one that ran constantly in the background while the machine is busy doing something else. The best way to do this was to run a Windows application continuously or at a regular interval with the use of the Windows scheduler. But there was one big disadvantage: Someone had to log on to the system to start this application.

This is no longer a problem because the best way to do all this is to create a Windows Service for Windows 2000/Windows NT.

What Is Windows Service (Previously Called NT Service)?

The core function of a Windows Service is to run an application in the background. A few things that make them different from a Windows application are that a Windows Service starts before any user logs on to the system (if it has been set up to start at boot up). The service can be set up in such a way that it requires the user to start it manually.

Also, Windows Service has its own process; hence, it runs very efficiently. Normally, a Windows Service will not have a user interface for the simple reason that it can be run even if no one is logged on to the system. This is not a rule; you can still have a Windows Service with a user interface.

In Windows 2000, you can view all the services running on your computer by opening Control Panel, Administrative Tools, and then clicking Services.

Advertisement

Creating a Windows Service in VB.NET

Prior to VB.NET, creating a Windows Service was a lot of work. You had to use some system-level procedure that was not very easy, but thanks to VB.NET this has become very easy. We shall now learn how to create a Windows Service.

You should know a few things before we dive in. Windows Service is not available in Windows 95, 98, or ME. You need to have Windows NT or Windows 2000 to run Services.

The advantage to using .NET is that the framework incorporates all the classes. This shall help us to create, install, and control Windows Service.

Open your Visual Studio .NET, create a new Windows Service Project, which we shall call MyService, and then click OK.

Add the Timer control from the Toolbar in the Components tab. In the properties window of Timer1, change the Interval property to 10000, which is 10 seconds.

The Source Code

Double-click the Timer1 control to open a code window for Timer1_Elapsed and type the following code. (This code shall execute every 10 seconds.)

  Dim MyLog As New EventLog() ' create a new event log
  ' Check if the the Event Log Exists
  If Not MyLog.SourceExists("MyService") Then
    MyLog.CreateEventSource("MyService", "Myservice Log")
  ' Create Log
  End If
  MyLog.Source = "MyService"
  ' Write to the Log
  MyLog.WriteEntry("MyService Log", "This is log on " & _
                    CStr(TimeOfDay), _
                    EventLogEntryType.Information)

Type the following code in the OnStart procedure. (This procedure is called when you start the service, which shall enable the timer.)

    Timer1.Enabled = True

And type the following code in the OnStop procedure. (This procedure is called when you stop the service, which shall disable the timer.)

    Timer1.Enabled = False

Our application is now ready, but a few things still need to be done before we move ahead. When we build this application, the executable created is not a Windows application; hence, you can’t just click and run it. It needs to be installed as a service but don’t worry; we don’t have to do it manually. VB.Net has a facility to add an installer to our program and then use a utility to install the service.

Advertisement

Adding Installer to the Project

Open the Service1.vb design window and right-click and then select the Add Installer option. This adds an installer project, ProjectInstaller.vb, with two controls, ServiceProcessInstaller1 and ServiceInstaller1, in our existing project.

Select the ServiceInstaller1 control and open the property window. Change the ServiceName and DisplayName properties to MyService. (This is the name you want to appear in the list of services in Services windows.)

Select the ServiceProcessInstaller1 control and open the property window. Change the Account property to LocalSystem. (This needs to be specified because we need to run this on our local machine.)

Now it time to build the application and create an executable. Select Build Solution from the Build menu to create an executable with installation instructions for the service.

Installing the Service

To install this service, we need to use the InstallUtil program, which is a .NET utility, to install Windows Service. You can find this in folder C:\WINNT\Microsoft.NET\Framework\v1.0.3705. (This might be different on your computer, depending upon the version you are using.)

Alternatively, you could run the .NET Command Window by selecting Start, Programs, Microsoft Visual Studio .NET, Visual Studio .NET Tools, Visual Studio .NET Command Prompt. This sets all the required paths for you.

Type the following command in that window: InstallUtil C:\tgol\Myservice\Bin\Myservice.exe. (This is the path for the executable of the service we just created. Remember, VB.NET created the executable in the Bin Folder under the project folder. Please make sure you change this to your executable path.) Please look at the message and log to make sure the service is installed properly.

Advertisement

Starting the Service

Running a service and starting a service are two different things. When we install the service with InstallUtil, we are now running the service but have yet to start it. To view and start the service, open the Control Panel. Open Administrative Tools, click Services, locate MyService, and right-click and select Start to start this service.

Now our service has started. Open the Event Viewer from Administrative Tools and click the Application Log to see the logs created by the Service (MyService) every 10 seconds. (If you don’t see any logs, click Refresh [F5]. You will have to keep refreshing to see the latest event logs.

Stopping the Service

Open Control Panel, open Administrative Tools, click Services, right-click MyService, and select Stop to stop the service.

Uninstalling the Service

This procedure is similar to installing the service, but now we shall run the InstallUtil with /U Parameter, which uninstalls the service:

InstallUtil /U C:\tgol\Myservice\Bin\Myservice.exe (or executable path on your computer). Please look at the message to confirm that the service is uninstalled properly.

Tips

  • Stop the service and close the Service window before you install/uninstall the service.
  • Always uninstall/install if you make any changes to the service application.
  • Try avoiding user interface, inputs, and msgbox in the Service Application.
  • Open ProjectInstaller.vb, select ServiceInstaller1 control, and open the property window. Change the StartType property to Automatic if you want to start the service automatic.
Advertisement

Conclusion

Windows Service is often overlooked. Use Windows Service instead of a standard application when you have to monitor or administer something in the background. The only disadvantage is the installation procedure, but I bet there are more positive aspects then negative when selecting Windows Service over applications running Windows Scheduler.

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.