Platform SDK: DLLs, Processes, and Threads

Installing a Service

A service configuration program uses the CreateService function to install a service in a SCM database. The application-defined schSCManager handle must have SC_MANAGER_CREATE_SERVICE access to the SCManager object. The following example shows how to install a service.

VOID CreateSampleService() 
{ 
    LPCTSTR lpszBinaryPathName = 
        "%SystemRoot%\\system\\testserv.exe"; 
 
    schService = CreateService( 
        schSCManager,              // SCManager database 
        "Sample_Srv",              // name of service 
        lpszDisplayName,           // 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 
        lpszBinaryPathName,        // service's binary 
        NULL,                      // no load ordering group 
        NULL,                      // no tag identifier 
        NULL,                      // no dependencies 
        NULL,                      // LocalSystem account 
        NULL);                     // no password 
 
    if (schService == NULL) 
        MyErrorExit("CreateService"); 
    else 
        printf("CreateService SUCCESS.\n"); 
 
    CloseServiceHandle(schService); 
}