Starting a Service in Windows XP

Environment: VC++ 6.0, Windows XP

Introduction

I was learning how to start a service from a program (VC++) in a Windows XP environment.

Background

Basically, my problem was putting a system tray icon through a DLL that will be run by the winmgmt service in Windows XP. I tried so many ways within my knowledge but failed. So, I tried running it as a service option. It is simple. It just uses a few functions.

Using the Code

I used the sample code available in MSDN, everything relating to starting a service put into a function called StartSampleService(). The core part starts with OpenSCManager.

The OpenSCManager function establishes a connection to the service control manager on the specified computer and opens the specified service control manager database.


SC_HANDLE OpenSCManager(
LPCTSTR lpMachineName,
LPCTSTR lpDatabaseName,
DWORD dwDesiredAccess
);

This returns a handle of type SC_HANDLE that will be used to open a service.

schService =

OpenService( schSCManager,          // SCM database
"IconService",                      // service name Here I gave
                                    // my sample service, Please
change this SERVICE_ALL_ACCESS);    // use according to your wishes.
                                    // See that the service is not
                                    // running currently.

Then next call is to StartService(..). The results displayed through the console are done through message boxes.

Points of Interest

The interesting thing I learned is doing Console applications and still using the windows functionality such as MessageBoxes.To get this, I started my project as a Win 32 console application and in next dialog box, I selected “An Application that supports MFC.” It made things simpler.

Downloads


Download demo project – 26 Kb



Download source – 3 Kb

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read