2017-12-08 4 views
0

안녕하세요! 저는 현재 PC가 30 초 동안 무선 연결을 잃었을 때 주어진 프로세스를 멈추게하는 간단한 C# .NET 서비스를 작성 중입니다. 무선 연결이 반환되면 프로세스가 다시 시작됩니다. 서비스의 로직은 모두 소리가 나는 것처럼 보이고 서비스가 실행될 PC에있는 동일한 디렉토리에서 실행되는 대상 응용 프로그램과 함께 Visual Studio 개발 환경에서 서비스를 실행할 때 완벽하게 작동합니다. 그러나 원격 PC에서 서비스를 실행하면 응용 프로그램이 네트워크에 다시 연결될 때 절대로 다시 시작되지 않습니다. try-catch에서도 오류가 발생하지 않습니다. 나는 작업 디렉토리가 문제가되는 것에 대해 SO를 꽤 많이 읽었지만 그것이 왜 내 머신에서 작동하는지, 다른 머신에서는 작동하지 않는지 설명하지는 않는다. 대화 형 모드에서 Windows 서비스를 사용하지만 서비스가 아닌 특정 응용 프로그램을 시작할 수있는 이유는 무엇입니까? (프로세스. 시작)

try 
{ 
    ProcessStartInfo processInfo = new ProcessStartInfo(); 
    processInfo.FileName = @"C:\Path\Application\Application.exe"; 
    processInfo.WorkingDirectory = Path.GetDirectoryName(@"C:\Path\Application\Application.exe"); 
    processInfo.ErrorDialog = true; 
    processInfo.UseShellExecute = false; 
    processInfo.RedirectStandardOutput = true; 
    processInfo.RedirectStandardError = true; 
    Process proc = Process.Start(processInfo); 
} 
catch (Exception ex) 
{ 
    LogTrace.TraceLine("Error re-starting process " + startInfo.FileName + ": " + ex, false); 
} 

일부 다른 노트 :

-I하는 다양한 권한 수준의 다른 사용자와 서비스를 실행하는 시도 여기에 내가 현재 사용하고있는 코드입니다. 관리자로 서비스를 실행해도 아무런 효과가 없습니다.

-UAC는 완전히 꺼져 있습니다.

- FireDaemon을 사용하여 대상 PC의 세션 0에서 대화식 모드로 서비스를 실행 해 보았습니다.

누구든지 살펴볼만한 아이디어가 있습니까? 서비스 스타터의

+0

서비스를 시작하지 않으려면 System.ServiceProcess 네임 스페이스 설명서 및 예제를 확인하십시오. – Rob

+0

@Rob \t 답장을 보내 주셔서 감사합니다. 그러나 실제로 제 경우에는 필자가 작성한 서비스를 사용하여 응용 프로그램 .exe를 끝내고 다시 시작하려고합니다. 응용 프로그램을 다시 시작하면 실패합니다. –

답변

0

조각은 당신이, 당신은 서비스도 다릅니다의

{ 
protected override void OnStart() {...} 
protected override void OnStop {...} 
} 

배포을 포함하여 실행 한하고자하는 코드로 다른 곳에서 정의

{ 
using System.ServiceProcess; 
using... 

namespace myServicenamespace 
{ 
    static class Program 
    { 
     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     static void Main(string[] args) 
     { 
      ServiceBase[] ServicesToRun; 
      ServicesToRun = new ServiceBase[] { 
       new myService() 
      }; 
      ServiceBase.Run(ServicesToRun); 
     } 
    } 
} 

는 myService를 시작하려면 ServiceProcess에 대한 나머지 문서를 확인하면 더 많은 것을 볼 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 실제로 제 경우에는 이미 실행중인 서비스를 작성했습니다. 필자가 작성한 서비스를 사용하여 응용 프로그램 .exe를 끝내고 다시 시작하려고합니다. 응용 프로그램을 다시 시작하면 실패합니다. –

+0

자주 다른 권한으로 실행되는 서비스를 잊지 마세요, 그게 문제가 될 수 있습니까? 오류에 대한 모든 출력 (권한 및 환경 설정 부족으로 서비스에서 다시 어려울 수 있음, Windows 이벤트 시스템을 사용하여 서비스에서 피드백을 얻었습니다.) – Rob

+0

서비스를 도메인으로 실행 해 보았습니다. admin (PC 관리자)입니다.이 권한은 내가 제공 할 수있는 최대한의 권한입니다. 같은 결과. 불행하게도 히트 치는 시도 잡기가 있기 때문에 어디에서 오류를 로깅하는지 확신 할 수 없습니다. 작업 관리자에서 시작하는 프로세스를 볼 수 있지만 응용 프로그램 창이 나타나지 않습니다. –

관련 문제