Installing a Service

A service configuration program uses the CreateService function to install a service in the SCM database.

The SvcInstall function in the following example shows how to install a service from the service program itself. For the complete example, see Svc.cpp.

// Purpose: 
//   Installs a service in the SCM database
// Parameters:
//   None
// Return value:
//   None
VOID SvcInstall()
    SC_HANDLE schSCManager;
    SC_HANDLE schService;
    TCHAR szPath[MAX_PATH];

    if( !GetModuleFileName( "", szPath, MAX_PATH ) )
        printf("Cannot install service (%d)\n", GetLastError());

    // Get a handle to the SCM database. 
    schSCManager = OpenSCManager( 
        NULL,                    // local computer
        NULL,                    // ServicesActive database 
        SC_MANAGER_ALL_ACCESS);  // full access rights 
    if (NULL == schSCManager) 
        printf("OpenSCManager failed (%d)\n", GetLastError());

    // Create the service

    schService = CreateService( 
        schSCManager,              // SCM database 
        SVCNAME,                   // name of service 
        SVCNAME,                   // service name to display 
        SERVICE_ALL_ACCESS,        // desired access 
        SERVICE_WIN32_OWN_PROCESS, // service type 
        SERVICE_DEMAND_START,      // start type 
        SERVICE_ERROR_NORMAL,      // error control type 
        szPath,                    // path to service's binary 
        NULL,                      // no load ordering group 
        NULL,                      // no tag identifier 
        NULL,                      // no dependencies 
        NULL,                      // LocalSystem account 
        NULL);                     // no password 
    if (schService == NULL) 
        printf("CreateService failed (%d)\n", GetLastError()); 
    else printf("Service installed successfully\n"); 


Related topics

Service Installation, Removal, and Enumeration
The Complete Service Sample



Community Additions

© 2014 Microsoft