달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

http://suite.tistory.com/

 2007 05 fs


서비스 등록 프로그램 중 중지 했지만 중지 되지 않고 서비스에서도 중지중이고  제거 되지 않을 경우

아래와같이 주먹구구식으로  프로세스  죽이는 소스 를 넣는다.

~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void MySetStatus_Pending(DWORD dwState, DWORD dwAccept)
{
 SERVICE_STATUS ss;

 ss.dwServiceType=SERVICE_WIN32_OWN_PROCESS;
 
    ss.dwCurrentState=dwState;
    ss.dwControlsAccepted=dwAccept;

 ss.dwWin32ExitCode=0;
 ss.dwServiceSpecificExitCode=0;
 ss.dwCheckPoint=0;
 ss.dwWaitHint=0;

 // 현재 상태를 보관해 둔다.
 g_NowState=dwState;
 SetServiceStatus(g_hSrv,&ss);
}

~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


 case SERVICE_CONTROL_STOP:
   SC_HANDLE hScm, hSrv;
   SERVICE_STATUS ss;
   MySetStatus_Pending( SERVICE_CONTROL_STOP, 0);
   // SCM을 연다
   hScm=OpenSCManager(NULL,NULL, SC_MANAGER_CREATE_SERVICE );
   hSrv = OpenService( hScm, "SERVICE_NAME", SERVICE_ALL_ACCESS );
   QueryServiceStatus(hSrv,&ss);
   if (ss.dwCurrentState != SERVICE_STOPPED) {
      //프로세스 종료
     ControlService(hSrv,SERVICE_CONTROL_STOP,&ss);

     //또는 SERVICE_STOP_PENDING값을 이용하여 죽을때가지 기다려본다.
     Sleep(2000);

       

   }
 break;


~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



 

:
Posted by mastar