Share via


Eliminazione di un servizio

Un programma di configurazione del servizio usa la funzione OpenService per ottenere un handle per un oggetto servizio installato. Il programma può quindi usare l'handle dell'oggetto servizio nella funzione DeleteService per eliminare il servizio dal database SCM.

La funzione DoDeleteSvc nell'esempio seguente illustra come eliminare un servizio dal database SCM. La variabile szSvcName è una variabile globale che contiene il nome del servizio da eliminare. Per l'esempio completo che imposta questa variabile, vedere 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);
}

Installazione, rimozione ed enumerazione del servizio

Esempio di servizio completo