서비스 삭제

서비스 구성 프로그램은OpenService 함수를 사용하여 설치된 서비스 개체에 대한 핸들을 가져옵니다. 그러면 프로그램에서 DeleteService 함수의 서비스 개체 핸들을 사용하여 SCM 데이터베이스에서 서비스를 삭제할 수 있습니다.

다음 예제의 DoDeleteSvc 함수는 SCM 데이터베이스에서 서비스를 삭제하는 방법을 보여 줍니다. szSvcName 변수는 삭제할 서비스의 이름을 포함하는 전역 변수입니다. 이 변수를 설정하는 전체 예제는 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);
}

서비스 설치, 제거 및 열거형

전체 서비스 샘플