2010-12-02 3 views
0

다음 코드를 사용하여 C#에서 배치 파일을 실행하고 있습니다. 다음 코드는 내 Windows 서비스의 일부입니다. 이 코드는 Windows XP에서 완벽하게 작동하지만 Windows 서버 2003 OS에 Windows 서비스를 배포하면 종료 코드 1 (실패)이 반환됩니다. 누군가 내가 놓친 것을 알고 있습니까? Windows 서비스에 대한 몇 가지 특별한 권한을 부여해야합니까? 이 서비스는 로컬 시스템 서비스로 설치됩니다.Windows 서버 2003의 Windows 서비스에서 배치 파일을 실행할 수 없습니다. OS

 ProcessStartInfo psi = new ProcessStartInfo(); 

     //specify the name and arguments to pass to the command prompt 
     psi.FileName = ConfigurationManager.AppSettings["BatchFilePath"]; 
     psi.Arguments = fileName; 


     //Create new process and set the starting information 
     Process p = new Process(); 
     p.StartInfo = psi; 

     //Set this so that you can tell when the process has completed 
     p.EnableRaisingEvents = true; 

     p.Start(); 

     //wait until the process has completed 
     while (!p.HasExited) 
     { 
      System.Threading.Thread.Sleep(1000); 
     } 

     //check to see what the exit code was 
     if (p.ExitCode != 0) 
     { 
      logger.Write("Exit Code" + p.ExitCode); 
     } 
+1

성공시 반환되는 배치 파일은 무엇입니까? – Oded

+0

성공시 0을 반환합니다. –

+0

Windows 서버 2003에서는 명령 프롬프트에서 직접 배치 파일을 실행할 수 있으며 정상적으로 작동합니다. 하지만 그것은 Windows 서비스에서 작동하지 않습니다. –

답변

1

내 다음 세트는 작동 할 때 로그인 한 사용자로 실행되도록 서비스를 설정하는 것입니다. 그렇게하면 네트워크 서비스 계정이 작동을 멈추는 특정 계정인지 여부를 알 수 있습니다.

+0

당신은 남자입니다! 그것은 일했다 !!! –

+0

Windows Server 2003에서와 같이 로그인 한 사용자로 실행되도록 서비스가 변경되어 정상적으로 작동합니다. 지금 내가 궁금해하는 점은, 로그인하지 않으면 작동 여부입니다. 나는 이것을 지금 시험 할 것이다. 관리자 권한을 가진 계정으로 서비스를 실행해야한다고 생각하십니까? 로그인 한 내 사용자 이름에 관리자 권한이 있습니다. 어쨌든 귀중한 의견을 보내 주셔서 감사합니다. –

+0

실행하는 데 필요한 최소 권한을 제공하지 않아도되는 경우 관리 권한을 부여하지 않는 것이 가장 이상적입니다. 아마도 사용자 권한으로 충분할 수 있습니다. –

관련 문제