본문 바로가기
프로그래밍/C·C++

윈도우 서비스 제거하기

by ITPro 2011. 7. 4.

-인자로 전달된 서비스명의 윈도우 서비스를 제거한다.

#include <windows.h>

#define BUFSIZE 512

void RemoveService(char* sc_name){
        SC_HANDLE hManager;
        SC_HANDLE hService;
        SERVICE_STATUS sStat;
        char path[BUFSIZE];

        hManager=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);

        hService=OpenService(hManager,sc_name,SERVICE_ALL_ACCESS);

        if(hService){
                //서비스 실행 중지
                ControlService(hService,SERVICE_CONTROL_STOP,&sStat);

                while(QueryServiceStatus(hService,&sStat)){
                        if(sStat.dwCurrentState == SERVICE_STOP_PENDING){
                                Sleep(1000);
                        }else{
                                break;
                        }
                }

                //서비스 제거
                if(sStat.dwCurrentState == SERVICE_STOPPED){
                        DeleteService(hService);
                }

                CloseServiceHandle(hService);
        }

        CloseServiceHandle(hManager);
}


반응형

'프로그래밍 > C·C++' 카테고리의 다른 글

레지스트리 삭제하기  (0) 2011.07.04
레지스트리 값 출력하기  (0) 2011.07.04
파일 탐색하기  (0) 2011.07.04
호스트 IP 주소 얻기  (0) 2011.07.04
파일 다운로드 하기  (0) 2011.07.04