개발자 Q&A

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

2025.06.08 02:39

Win32 Query Service Status에 대한 도움을 부탁드립니다.

목록
  • API연금술사 오래 전 2025.06.08 02:39
  • 76
    1
제가 현재 Python의 pywin32 모듈을 사용하여 Windows 서비스의 상태를 확인하고자 합니다.
win32_query_service_status 함수는 서비스의 상태를 반환하도록 설계되어 있습니다.
하지만, 이 함수의 매개변수와 반환값에 대한 설명을 찾는데 어려움을 겪고 있습니다.

win32_query_service_status 함수의 매개변수와 반환값에 대한 자세한 설명을 부탁드립니다.
또한, 이 함수를 사용하여 서비스의 상태를 확인하는 예시 코드를 제공해주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  오래 전



    win32_query_service_status 함수의 매개변수는 다음과 같습니다.

    - hServiceHandle: 서비스의 핸들을 지정합니다. 서비스 핸들은 OpenService 함수를 사용하여 얻을 수 있습니다.
    - dwServiceStatus: 서비스의 상태를 저장할 변수입니다. 서비스 상태는 SERVICE_STATUS 구조체에 저장됩니다.

    win32_query_service_status 함수의 반환값은 다음과 같습니다.

    - 성공 시: TRUE
    - 실패 시: FALSE

    이 함수를 사용하여 서비스의 상태를 확인하는 예시 코드는 다음과 같습니다.

    #hostingforum.kr
    python
    
    import win32service
    
    import win32serviceutil
    
    
    
    def getServiceStatus(serviceName):
    
        try:
    
            hServiceHandle = win32serviceutil.OpenService(win32service.OpenSCManager(None, None, win32service.SCM_ACCESS_ALL), serviceName, win32service.SERVICE_QUERY_STATUS)
    
            if hServiceHandle:
    
                dwServiceStatus = win32service.QueryServiceStatus(hServiceHandle)
    
                if dwServiceStatus:
    
                    print(f"서비스 이름: {serviceName}")
    
                    print(f"서비스 상태: {dwServiceStatus[1]}")
    
                    print(f"서비스 시작 유형: {dwServiceStatus[2]}")
    
                    print(f"서비스 상태: {dwServiceStatus[3]}")
    
                    print(f"서비스 확인 시간: {dwServiceStatus[4]}")
    
                    print(f"서비스 시작 시간: {dwServiceStatus[5]}")
    
                    print(f"서비스 종료 시간: {dwServiceStatus[6]}")
    
                    print(f"서비스 활성 시간: {dwServiceStatus[7]}")
    
                    print(f"서비스 활성 시간: {dwServiceStatus[8]}")
    
                else:
    
                    print(f"서비스 상태를 확인할 수 없습니다.")
    
            else:
    
                print(f"서비스 핸들을 열 수 없습니다.")
    
        except Exception as e:
    
            print(f"에러: {e}")
    
    
    
    getServiceStatus("서비스 이름")
    
    


    이 코드는 서비스 이름을 지정하여 서비스의 상태를 확인합니다. 서비스 상태는 SERVICE_STATUS 구조체에 저장됩니다. 서비스 상태는 다음과 같이 나열됩니다.

    - SERVICE_STATUS_PROCESS: 서비스 프로세스의 상태
    - SERVICE_STATUS_ACCEPT_STOP: 서비스가 중단을 수락하는지 여부
    - SERVICE_STATUS_ACCEPT_PAUSE: 서비스가 일시 정지를 수락하는지 여부
    - SERVICE_STATUS_CHECKPOINT: 서비스의 체크포인트 시간
    - SERVICE_STATUS_CHECKPOINT_TIME: 서비스의 체크포인트 시간
    - SERVICE_STATUS_CHECKPOINT_COUNT: 서비스의 체크포인트 횟수
    - SERVICE_STATUS_PROCESS_ID: 서비스 프로세스의 ID
    - SERVICE_STATUS_THREAD_ID: 서비스 스레드의 ID

    이 함수를 사용하여 서비스의 상태를 확인할 수 있습니다.

    2025-06-08 02:40

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

검색

게시물 검색