서비스 삭제
서비스 구성 프로그램은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);
}
관련 항목