2009-12-07 2 views
4

특정 리소스를 사용할 수 없을 때 실패하는 서비스가 있습니다. 두 번 다시 시작한 다음 세 번째 시도에서 SMS를 보내도록 구성했습니다. 불행히도 Windows는 특정 번호가 일인 일 때만 실패 횟수를 재설정 할 수있는 옵션을 제공하지만 실제로는 세 번째 실패마다 다시 설정해야합니다. 문제는 일단 서비스가 다시 실행되면 하나의이 실패하면 다른 SMS를 보내고 서비스를 다시 시작하지 못하게됩니다.Windows 서비스에 대한 현재 실패 횟수를 얻는 방법

그래서 SMS 스크립트에 실패 카운터를 재설정하는 몇 가지 코드를 포함하고 싶습니다. 실패의 행동에 대한 다른 것들 (이진) 설정 중 포함

\ 서비스 \

HKEY_LOCAL_MACHINE을 \ 시스템 CURRENTCONTROLSET \하지만, 지금까지 내가 말할 수없는 카운터 : 나는 다음과 같은 레지스트리 위치를 발견했다.

sc 명령을 사용하면 모든 종류의 항목을 쿼리 할 수 ​​있지만 실패 횟수는 반환하지 않습니다.

이상적으로는 프로그램 적으로 실패 카운터를 쿼리/재설정하는 방법을 원하지만 명령 줄 또는 레지스트리 솔루션이 좋을 것입니다 (스크립트를 작성할 수 있기 때문에).

+0

이 문제를 조사 중이므로 WMI/root/cimv2 : Win32_Service 인터페이스를 통해이 작업을 수행 할 수 있다고 생각합니다. 나는 계속 연구하고 당신에게 돌아갈 것입니다. –

+0

WMI 인터페이스를 통해이 작업을 수행 할 수 없습니다. 나는 어떻게 도울 수 있는지에 관해서는 손해보고있다. 나는 계속 점검 할 것입니다. –

+0

@Wayne : 조사해 주셔서 감사합니다. 나는 win32 API 전문가가 아니므로 어디서부터 시작해야할지 모르겠습니다. 방법이있을 거라고 생각할거야. – Draemon

답변

0

Win32 API를 사용하면 실패 횟수를 X 초가 아닌 X 일 후에 재설정하도록 지정할 수 있습니다. SERVICE_FAILURE_ACTIONS 구조체의 dwResetPeriod 멤버를 살펴보십시오.

Windows가 부팅 된 후 주어진 서비스가 몇 번 실패했는지 아는 SCM 내부에서 개인적으로 유지되는 실패 카운터 자체. 이 카운터는 응용 프로그램이 수동으로 재설정하거나 쿼리 할 때까지 액세스 할 수 없습니다.

+0

충격적인 부적절한 점!이는 "매 3 번째 실패"와 같은 행동이 불가능하다는 것을 의미합니다. API를 통해 재설정 대기 시간을 wait-restart-wait-restart-sms주기와 일치하도록 설정할 수 있지만 A) 예측 가능한 실패 타이밍을 가정하고 B) API를 통한 서비스 구성이 마음에 들지 않습니다. UI가 이러한 설정을 처리 할 수없는 경우 – Draemon

0

저는 Daemoniq이라는 오픈 소스 Windows 서비스 호스팅 프레임 워크의 개발자입니다. Setting service recovery options은 기능 중 하나입니다. 당신은 http://daemoniq.org

현재 기능에서 다운로드 할 수 있습니다 포함의 app.config

  • 실행을 통해 서비스 명, 나 displayName, 설명 및 serviceStartMode 같은 CommonServiceLocator
  • 설정 일반 서비스 속성을 통해

    • 컨테이너 불가지론 서비스 위치 동일한 프로세스에서 여러 Windows 서비스
    • app.config를 통해 복구 옵션 설정
    • 서비스 설정 명령 줄을 통해
    • 설치 명령 줄, 제거, 디버그 서비스를 통해의 app.config
    • 설정 서비스 프로세스 자격 증명을 통해

    감사에 의존!

  • 관련 문제