728x90
반응형
참고: https://msdn.microsoft.com/en-us/library/windows/desktop/ms685996(v=vs.85).aspx
본인이 만든 windows service를 작업관리자나 sc 등의 명령으로 정지 못하게 하고 싶은 경우 SERVICE_STATUS의 dwControlsAccepted 값을 제어함으로 목적을 달성할 수 있다.
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 | BOOL Lock(SERVICE_STATUS_HANDLE hServiceStatus) { SERVICE_STATUS ss; ss.dwCheckPoint = 0; ss.dwControlsAccepted = 0; // 어떤 제어 요청도 받지 않음 ss.dwCurrentState = dwCurrentState ss.dwServiceSpecificExitCode = 0; ss.dwServiceType = SERVICE_WIN32_OWN_PROCESS; ss.dwWaitHint = 0; ss.dwWin32ExitCode = 0; return SetServiceStatus(hServiceStatus, &ss); } BOOL Unlock(SERVICE_STATUS_HANDLE hServiceStatus) { SERVICE_STATUS ss; ss.dwCheckPoint = 0; ss.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE; ss.dwCurrentState = dwCurrentState ss.dwServiceSpecificExitCode = 0; ss.dwServiceType = SERVICE_WIN32_OWN_PROCESS; ss.dwWaitHint = 0; ss.dwWin32ExitCode = 0; return SetServiceStatus(hServiceStatus, &ss); } |
여기서 파라미터로 받는 SERVICE_STATUS_HANDLE은 서비스 등록 시 사용한 RegisterServiceCtrlHandlerEx의 리턴 값을 사용해야한다.
반응형
'dev > windows' 카테고리의 다른 글
[windows] 윈도우즈 서비스: 실제 등록된 서비스명 가지고 오기 (0) | 2017.05.30 |
---|---|
[windows] DISM을 이용한 SNMP 기능 켜기 (0) | 2017.05.23 |
[windows] 함수 동적 링크하기 (Run-Time Dynamic Linking) (0) | 2017.05.23 |
[windows] 느린 윈도우 빠르게 만들기(애니메이션 효과 제거, 성능 향상) (2) | 2016.05.09 |
[windows] 윈도우에서 프로세스 강제 종료하기 (0) | 2016.03.16 |
댓글