개발자 Q&A

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

2025.06.13 22:04

win32_delete_service 함수 이해 및 사용법에 대한 도움을 요청합니다

목록
  • WebSocket광 오래 전 2025.06.13 22:04 인기
  • 139
    1
제가 win32_delete_service 함수를 사용하여 서비스를 삭제하는 과정에서 막혔습니다.

win32_delete_service 함수를 호출하여 서비스를 삭제하려는데, 서비스 이름을 인수로 전달해야 하는데, 서비스 이름을 어떻게 얻어야 하는지 몰라요.

윈도우 서비스 관리자에서 서비스 이름을 얻을 수는 있지만, 프로그램에서 자동으로 서비스 이름을 얻을 수 있는 방법이 있나요?

    댓글목록

    profile_image
    나우호스팅  오래 전



    윈도우 서비스 관리자에서 서비스 이름을 얻을 수 있지만, 프로그램에서 자동으로 서비스 이름을 얻을 수 있는 방법이 있습니다.

    1. SC_MANAGER_CONNECT 권한으로 서비스 관리자를 열어 서비스 목록을 가져옵니다.
    2. SC_MANAGER_ENUMERATE_SERVICE 권한으로 서비스 목록에서 서비스 이름을 가져옵니다.
    3. win32_service_openSCManager 함수를 사용하여 서비스 관리자를 열고, win32_service_enum_services 함수를 사용하여 서비스 목록을 가져옵니다.
    4. win32_service_get_service_display_name 함수를 사용하여 서비스 이름을 가져옵니다.

    예제 코드는 다음과 같습니다.

    #hostingforum.kr
    python
    
    import win32serviceutil
    
    import win32service
    
    
    
    def get_service_name(service_name):
    
        try:
    
            service_handle = win32serviceutil.OpenService(None, service_name, win32service.SERVICE_QUERY_STATUS)
    
            if service_handle:
    
                return service_name
    
            else:
    
                return None
    
        except Exception as e:
    
            print(f"Error: {e}")
    
            return None
    
    
    
    def get_services():
    
        services = []
    
        try:
    
            sc_manager_handle = win32serviceutil.OpenSCManager(None, None, win32service.SERVICE_MANAGER_CONNECT)
    
            if sc_manager_handle:
    
                services = win32serviceutil.EnumServicesStatus(sc_manager_handle)
    
                win32serviceutil.CloseServiceHandle(sc_manager_handle)
    
            return services
    
        except Exception as e:
    
            print(f"Error: {e}")
    
            return []
    
    
    
    def main():
    
        services = get_services()
    
        for service in services:
    
            service_name = get_service_name(service[0])
    
            if service_name:
    
                print(f"Service Name: {service_name}")
    
    
    
    if __name__ == "__main__":
    
        main()
    
    


    이 예제 코드는 서비스 관리자에서 서비스 이름을 자동으로 가져오는 방법을 보여줍니다.

    2025-06-13 22:05

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

검색

게시물 검색