안녕하세요! 저는 현재 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에서 대화식 모드로 서비스를 실행 해 보았습니다.
누구든지 살펴볼만한 아이디어가 있습니까? 서비스 스타터의
서비스를 시작하지 않으려면 System.ServiceProcess 네임 스페이스 설명서 및 예제를 확인하십시오. – Rob
@Rob \t 답장을 보내 주셔서 감사합니다. 그러나 실제로 제 경우에는 필자가 작성한 서비스를 사용하여 응용 프로그램 .exe를 끝내고 다시 시작하려고합니다. 응용 프로그램을 다시 시작하면 실패합니다. –