Share via


Eliminación de un servicio

Un programa de configuración de servicio usa la función OpenService para obtener un identificador de un objeto de servicio instalado. A continuación, el programa puede usar el identificador de objeto de servicio en la función DeleteService para eliminar el servicio de la base de datos SCM.

La función DoDeleteSvc del ejemplo siguiente muestra cómo eliminar un servicio de la base de datos SCM. La variable szSvcName es una variable global que contiene el nombre del servicio que se va a eliminar. Para obtener el ejemplo completo que establece esta variable, vea SvcConfig.cpp.

//
// Purpose: 
//   Deletes a service from the SCM database
//
// Parameters:
//   None
// 
// Return value:
//   None
//
VOID __stdcall DoDeleteSvc()
{
    SC_HANDLE schSCManager;
    SC_HANDLE schService;
    SERVICE_STATUS ssStatus; 

    // 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());
        return;
    }

    // Get a handle to the service.

    schService = OpenService( 
        schSCManager,       // SCM database 
        szSvcName,          // name of service 
        DELETE);            // need delete access 
 
    if (schService == NULL)
    { 
        printf("OpenService failed (%d)\n", GetLastError()); 
        CloseServiceHandle(schSCManager);
        return;
    }

    // Delete the service.
 
    if (! DeleteService(schService) ) 
    {
        printf("DeleteService failed (%d)\n", GetLastError()); 
    }
    else printf("Service deleted successfully\n"); 
 
    CloseServiceHandle(schService); 
    CloseServiceHandle(schSCManager);
}

Instalación, eliminación y enumeración del servicio

Ejemplo de servicio completo