2013-03-30 5 views
1

Im은 게임 PSOBB에 대한 소형 로더를 만들었지 만 오프라인 버전의 경우 "servers"라는 폴더로 이동하여 3 개의 서버 실행 파일을 모두 실행하도록합니다. 이 프로그램을 만드는 중이 야. 그래서 내 문제는 다른 폴더 (sub dir)에서 .exe를 시작하는 버튼을 만들었다는 것입니다.Process.Start() 프로세스가 올바르게 시작되지 않음

private void startLoginServerButton_Click(object sender, EventArgs e) 
{ 
    Process[] killLoginServer = Process.GetProcessesByName("login_server"); 

    if (killLoginServer.Length == 0) 
    { 
     Process.Start("servers\\login_server.exe"); 
     System.Threading.Thread.Sleep(1000); 
     refresh(); // This goes to another method and checks if the program is running 
    } 
    else if (killLoginServer.Length > 0) 
    { 
     foreach (Process stop in killLoginServer) 
     { 
      stop.Kill(); 
     } 
     System.Threading.Thread.Sleep(1000); 
     refresh(); 
    } 
} 

프로세스가 실행 중인지 여부와 실행 중인지 여부를 확인합니다. 문제는 버튼을 누르면 시작할 수 있지만 완전히로드되지 않으므로 닫히지 만 프로세스를 수동으로 시작하면 문제가 없습니다. 관리자로 내 로더를 실행하려고했지만 아무것도 ... 나는 전체 경로를 지정했지만 문제는 여전히있었습니다. 해당 위치에있는 모든 프로세스를 시작할 때 완전히 그 경로를 한정해야

경로가 잘못

+0

동일한 시스템 또는 원격 폴더 점유율이 실행 파일이 있습니까? –

+0

ProcessStartInfo.WorkingDirectory를 설정하지 않으면 제대로 작성된 프로그램이 제대로 작동하지 않습니다. 파일을로드하기 위해 상대 경로 이름을 사용하면 파일이 손상되고 구워지는 경향이 있습니다. 코드 스 니펫 에서처럼. WorkingDirectory를 EXE와 동일한 경로로 설정하십시오. –

답변

0

.... 당신의 PC에 msdn

를 참조하십시오 Process.Start("C:\\myprocess.exe");

를 다른 PC에 : Process.Start("OtherPcNetAddress\\SharedFolder\\myprocess.exe");

+0

noooooOOOO, 나는 당신이 방금 제안한 것을했다고 말했습니다 ... – xR34P3Rx

0

을 나는 당신의 경로가 올바른지 생각하지 않습니다.

Process.Start(@"C:/servers/login_server.exe"); 

또는이 같은 상대 경로 :이 같은 절대 경로를 지정해야 하나

Process.Start(Path.Combine(Environment.CurrentDirectory, @"servers/login_server.exe")); 
+0

아직 작동하지 않습니다. 로드하려는 프로그램은 콘솔 기반 프로그램입니다. 콘솔 창이 잠시 동안 열리고 닫힙니다. 열려는 모든 프로그램에 대해 다음을 수행합니다. / – xR34P3Rx