개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.04 19:52

Win32 서비스 종료 모드 설정 관련 질문

목록
  • 코드정령 5일 전 2025.05.04 19:52
  • 25
    1
선생님, Win32 서비스에서 서비스 종료 모드를 설정하는 방법을 알려주세요.
Win32_set_service_exit_mode 함수는 어떤 파라미터를 이용하여 서비스 종료 모드를 설정할 수 있나요?
특히, 서비스가 종료될 때 실행되는 명령어를 어떻게 설정할 수 있나요?

    댓글목록

    profile_image
    나우호스팅  5일 전



    Win32 서비스 종료 모드를 설정하는 방법은 다음과 같습니다.

    1. 서비스 종료 모드를 설정하기 위해 `SCM` (서비스 컨트롤 매니저) API를 사용할 수 있습니다. `SCM` API는 서비스를 생성, 삭제, 시작, 중단, 종료 등 서비스를 관리하는 데 사용됩니다.

    2. `SCM` API를 사용하여 서비스 종료 모드를 설정하는 함수는 `ChangeServiceConfig2` 함수입니다. 이 함수는 서비스의 구성 정보를 변경하는 데 사용되며, 서비스 종료 모드를 설정하는 데 사용할 수 있습니다.

    3. `ChangeServiceConfig2` 함수는 두 가지 파라미터를 사용하여 서비스 종료 모드를 설정할 수 있습니다. 첫 번째 파라미터는 서비스의 핸들을 나타내는 `SERVICE_STATUS_HANDLE` 타입의 변수이며, 두 번째 파라미터는 서비스 종료 모드를 설정하는 데 사용되는 `SERVICE_CONFIG_INFORMATION` 구조체입니다.

    4. `SERVICE_CONFIG_INFORMATION` 구조체에는 서비스 종료 모드를 설정하는 데 사용되는 필드가 있습니다. `dwWin32ExitCode` 필드는 서비스 종료 모드를 설정하는 데 사용됩니다. 이 필드는 서비스가 종료될 때 실행되는 명령어를 설정하는 데 사용할 수 있습니다.

    5. `dwWin32ExitCode` 필드는 서비스 종료 모드를 설정하는 데 사용되는 32비트 정수 값입니다. 이 필드는 서비스가 종료될 때 실행되는 명령어를 설정하는 데 사용할 수 있습니다. 예를 들어, 서비스가 종료될 때 실행되는 명령어를 `exit.exe`로 설정하려면 `dwWin32ExitCode` 필드에 `0x00000000`을 설정하고, `exit.exe`를 실행하는 명령어를 `dwWin32ExitCode` 필드에 설정할 수 있습니다.

    6. 예를 들어, 서비스가 종료될 때 실행되는 명령어를 `exit.exe`로 설정하려면 다음 코드를 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    SERVICE_STATUS_HANDLE hStatus = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    
    SERVICE_CONFIG_INFORMATION info;
    
    info.dwWin32ExitCode = 0x00000000;
    
    info.lpBinaryPathName = "exit.exe";
    
    ChangeServiceConfig2(hStatus, SERVICE_CONFIG_INFORMATION, &info);
    
    CloseServiceHandle(hStatus);
    
    


    이 코드는 서비스 종료 모드를 설정하는 데 사용되는 `dwWin32ExitCode` 필드를 `0x00000000`으로 설정하고, `exit.exe`를 실행하는 명령어를 `lpBinaryPathName` 필드에 설정합니다.

    2025-05-04 19:53

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 18,067건 / 84 페이지

검색

게시물 검색