Windows Services Programming 6

 

 

 

 

 

Service Configuration Programs

 

Programmers and system administrators use service configuration programs to modify or query the database of installed services. The database can also be accessed by using the registry functions. However, you should only use the SCM configuration functions, which ensure that the service is properly installed and configured. The SCM configuration functions require either a handle to an SCManager object or a handle to a service object. To obtain these handles, the service configuration program must:

 

  1. Use the OpenSCManager() function to obtain a handle to the SCM database on a specified machine.
  2. Use the OpenService() or CreateService() function to obtain a handle to the service object.

 

Service Installation, Removal, and Enumeration

 

A configuration program uses the CreateService() function to install a new service in the SCM database. This function specifies the name of the service and provides configuration information that is stored in the database. A configuration program uses the DeleteService() function to remove an installed service from the database. To obtain the service name, call the GetServiceKeyName() function. The service display name, used in the Services control panel applet, can be obtained by calling the GetServiceDisplayName() function. A service configuration program can use the EnumServicesStatusEx() function to enumerate all services and their statuses. It can also use the EnumDependentServices() function to enumerate which services are dependent on a specified service object.

 

Service Configuration

 

The system uses the configuration information to determine how to start the service. The configuration information also includes the service display name and its description. For example, for the DHCP service, you could use the display name "Dynamic Host Configuration Protocol Service" and the description "Provides internet addresses for computer on your network." To modify the configuration information for a service object, a configuration program uses the ChangeServiceConfig() or ChangeServiceConfig2() function. To retrieve the configuration information for a service object, the configuration program uses the QueryServiceConfig() or QueryServiceConfig2() function. To modify the security descriptor for either an SCManager object or a service object, a configuration program uses the SetServiceObjectSecurity() function. To retrieve a copy of the security descriptor, the configuration program uses the QueryServiceObjectSecurity() function.

 

Configuring a Service Using SC

 

The Windows SDK contains a command-line utility, Sc.exe, that can be used to query or modify the database of installed services. Its commands correspond to the functions provided by the SCM. The syntax is as follows.

 

Syntax: sc [ServerName] Command [ServiceName][option1][option2]...

ServerName: Optional server name. Use the form \\ServerName.

 

Command: One of the following commands:

 

boot

config

create

delete

description

EnumDepend

failure

failureflag

GetDisplayName

GetKeyName

Lock

qc

qdescription

qfailure

qfailureflag

qprivs

qsidtype

query

queryex

privs

QueryLock

sdset

sdshow

showsid

sidtype

 

ServiceName: The name of the service, as specified when it was installed.

 

option1: An optional parameter.

 

option2: An optional parameter.

 

To see complete syntax for a command, use the following command:

 

sc Command

 

The Windows SC command options

 

Runnung the Windows SC command example

 

 

 

 

< Windows Services 5 | Win32 Programming | Windows Services Win32 Programming | Windows Services 7 >