2013-04-18 7 views
0

EDIT 2 : 이제는 서비스를 실행하려고 시도하는 시스템의 문제라고 생각합니다. 비슷하게 설정이 된 다른 컴퓨터로 서비스를 옮겨 보았습니다. 서비스는 로컬 사용자로도 성공적으로 시작할 수있었습니다. 지금은 단지 설치하고 자동의 시작 유형 및 로그 구성되는 Windows 서비스가 로컬 사용자로 시작되지 않음


내가 (VB.net로 작성) Windows 서비스 프로젝트를 가지고 ... 두 시스템 사이의 차이점에 대해 알아 내야 설정 로컬 사용자 계정으로 설정합니다. 이 서비스는 컴퓨터가 처음 시작될 때 시작됩니다. 그러나 서비스를 중지하고 다시 시작하려고하면 "오류 1053 : 서비스가 시작 또는 제어 요청에시기 적절하게 응답하지 않았습니다." 바로. 그러나 Log On As를 "Local System account"로 변경하면 서비스가 시작됩니다.

요약 :

  • 컴퓨터가 먼저 수동으로 시작하는 경우
  • 서비스로 로컬 사용자를 실행하지 않습니다 시작할 때와 같은 로컬 사용자를 실행합니다 서비스 컴퓨터가 처음
  • 를 시작할 때
  • 서비스가 로컬 시스템으로 실행됩니다
  • 수동으로 시작한 경우 서비스가 로컬 시스템으로 실행됩니다.

나는 1053 오류를 읽었습니다. OnStart 메서드로 인해 충분히 빠르게 반환되지 않습니다. 서비스가 이전에 시작되었고 즉시 오류 메시지가 표시된다는 사실로 인해 시간 초과가 발생하지 않았다고 생각합니다. 이것을 확인하기 위해, 완전히 새로운 Windows 서비스 프로젝트를 만들었고 내가 만든 빌드 및 설치 내용을 변경하지 않았습니다. 나는 똑같은 행동을한다.

나는 무슨 일이 일어나고 있는지를 놓치고 있습니다. 내가 말할 수있는 한 로컬 사용자는 서비스를 실행할 수있는 모든 올바른 권한을 가지고 있습니다 (컴퓨터가 처음 시작될 때 해당 자격 증명으로 시작된다는 점에서 분명합니다). 그리고 OnStart 메서드는 ' 실제로 (같은 행동을하는 완전히 빈 벙어리 서비스로 분명히 알 수 있듯이) 시간이 초과되었습니다.

서비스 시작에 방해가되는 사항이나 더 나은 오류 메시지 (응용 프로그램 이벤트 로그를 살펴 보았지만 아무 것도 표시되지 않음)에 대한 아이디어가 있습니까?

EDIT : 여기 는 (모듈로 here에서 EventLogger 사용) I 만든 못하는 서비스로부터 코드이다.

Protected Overrides Sub OnStart(ByVal args() As String) 
    ' Add code here to start your service. This method should set things 
    ' in motion so your service can do its work. 
    EventLogger.WriteToEventLog("On Start") 
End Sub 

Protected Overrides Sub OnStop() 
    ' Add code here to perform any tear-down necessary to stop your service. 
    EventLogger.WriteToEventLog("On Stop") 
End Sub 

그리고 같은 프로젝트의 Main 메서드. I는 로컬 사용자와 서비스를 실행하려고하면

' The main entry point for the process 
<MTAThread()> _ 
<System.Diagnostics.DebuggerNonUserCode()> _ 
Shared Sub Main() 
    EventLogger.WriteToEventLog("Starting Main Method") 
    Dim ServicesToRun() As System.ServiceProcess.ServiceBase 

    ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1} 

    System.ServiceProcess.ServiceBase.Run(ServicesToRun) 
    EventLogger.WriteToEventLog("Leaving Main Method") 
End Sub 

는, 메시지 중 어느 것도 이벤트 로그에 표시되지 내가 로컬 시스템으로 서비스를 실행하면 나는 오류 1053를 얻을, 메시지는 이벤트에 표시 로그.

실제 서비스를 로컬 사용자로 실행해야하는 이유는 네트워크 공유에 액세스 할 수 있도록하기 위해서입니다. 현재 Windows User Impersonation을 사용하고 있지만 로컬 사용자로 간단한 서비스를 시작할 수 있어야한다고 생각합니다.

답변

0

this resource을 사용하여 이벤트 로거를 만드십시오.그런 다음 서비스가 시작되지 않도록 OnStart 하위에서 일어날 가능성이있는 try/catch b/c의 각 하위에 코드를 래핑하십시오. onstart, onstop 및/또는 서비스 기본 서브의 샘플 코드를 게시하고 로컬 사용자 대 로컬 시스템을 사용해야하는 이유를 명확하게 설명하십시오.

+0

원본 프로그램은 OnStart 메서드에서 FileSystemWatcher를 만들고 시작합니다. 그러나 완전히 비어있는 Windows 서비스 프로젝트에서도 동일한 동작이 발생합니다. OnStart 메서드가 작동하지 않는다고 생각하지만 이벤트 로거 호출을 추가하고 내 질문을 업데이트합니다. –

관련 문제