# Poco::Util

# class WinService

Library: Util
Package: Windows
Header: Poco/Util/WinService.h

## Description

This class provides an object-oriented interface to the Windows Service Control Manager for registering, unregistering, configuring, starting and stopping services.

This class is only available on Windows platforms.

## Member Summary

Member Functions: displayName, getDescription, getFailureActions, getStartup, isRegistered, isRunning, isStopped, name, path, registerService, setDescription, setFailureActions, setStartup, start, stop, unregisterService

## Nested Classes

### struct FailureAction

## Types Aliases

### FailureActionTypeVector

using FailureActionTypeVector = std::vector < FailureActionType >;

### FailureActionVector

using FailureActionVector = std::vector < FailureAction >;

## Enumerations

### FailureActionType

SVC_NONE

SVC_REBOOT

SVC_RESTART

SVC_RUN_COMMAND

### Startup

SVC_AUTO_START

SVC_MANUAL_START

SVC_DISABLED

## Constructors

### WinService

WinService(
const std::string & name
);

Creates the WinService, using the given service name.

### WinService

WinService(
SC_HANDLE scmHandle,
const std::string & name
);

Creates the WinService, using the given connection to a Windows Service Manager and the given service name.

The class will close the given scmHandle on destruction

## Destructor

### ~WinService

~WinService();

Destroys the WinService.

## Member Functions

### displayName

std::string displayName() const;

Returns the service's display name.

### getDescription

std::string getDescription() const;

Returns the service description from the registry.

### getFailureActions

FailureActionTypeVector getFailureActions() const;

Returns the Failure Actions for the service.

### getStartup

Startup getStartup() const;

Returns the startup mode for the service.

### isRegistered

bool isRegistered() const;

Returns true if the service has been registered with the Service Control Manager.

### isRunning

bool isRunning() const;

Returns true if the service is currently running.

### isStopped

bool isStopped() const;

Returns true if the service is currently stopped.

### name

const std::string & name() const;

Returns the service name.

### path

std::string path() const;

Returns the path to the service executable.

Throws a NotFoundException if the service has not been registered.

### registerService

void registerService(
const std::string & path,
const std::string & displayName
);

Creates a Windows service with the executable specified by path and the given displayName.

Throws a ExistsException if the service has already been registered.

### registerService

void registerService(
const std::string & path
);

Creates a Windows service with the executable specified by path and the given displayName. The service name is used as display name.

Throws a ExistsException if the service has already been registered.

### setDescription

void setDescription(
const std::string & description
);

Sets the service description in the registry.

### setFailureActions

void setFailureActions(
FailureActionVector failureActions,
const std::string & command = "",
const std::string & rebootMessage = ""
);

Sets the Failure Actions for the service. If one of the Actions is SVC_RUN_COMMAND the command Parameter is added. If one of the Actions is SVC_REBOOT the Reboot Message is set.

### setStartup

void setStartup(
Startup startup
);

Sets the startup mode for the service.

### start

void start();

Starts the service. Does nothing if the service is already running.

Throws a NotFoundException if the service has not been registered.

### stop

void stop();

Stops the service. Does nothing if the service is not running.

Throws a NotFoundException if the service has not been registered.

### unregisterService

void unregisterService();

Deletes the Windows service.

Throws a NotFoundException if the service has not been registered.

## Variables

### STARTUP_TIMEOUT

static const int STARTUP_TIMEOUT;

### REGISTRY_DESCRIPTION

static const std::string REGISTRY_DESCRIPTION;

### REGISTRY_KEY

static const std::string REGISTRY_KEY;