2012-07-22 3 views
1

HW PCI를 특정 값으로 샘플링하는 도구를 실행하고 있습니다 (작성하지 않았습니다).process.start를 사용하여 응용 프로그램을 실행하면 수동으로 실행하는 것과 다른 값이 반환됩니다.

명령 프롬프트에서 실행하면 하나의 종료 코드 (올바른 코드)가 반환되지만 Process.Start을 사용하는 다른 응용 프로그램에서 실행하면 다른 종료 코드가 반환됩니다.

응용 프로그램을 직접 실행하거나 Process.Start을 통해 실행하는 것의 차이점은 무엇입니까? 이 문제에 대한 간단한 해결 방법을 알고 있습니까?

+2

실제 세부 정보가 없으면 누가 알겠습니까? 어떤 도구? 근원이 있니? 문서가 있습니까? 종료 코드를 설명합니까? 환경이 동일합니까? 등등. – leppie

+1

* 어떻게'Process.Start'를 호출합니까? * – Adam

+0

도구는 회사 내부입니다. –

답변

1

동일한 결과를 에서 얻으려면 명령 줄과 동일한 작업 디렉토리 에서 응용 프로그램을 실행해야합니다.

1

Hassan의 대답 (내 비슷한 문제를 해결 함)에서 설명한 것처럼 Process.Start()에서 반환 된 종료 코드는 실행 파일의 위치, 특히 어떤 디렉토리에 있는지에 따라 영향을받습니다. 여기에 사용한 코드가 있습니다. :

string yourExe = "C\\Program Files\\Your Directory\\YourExe.exe"; 
    string currentDir = Directory.GetCurrentDirectory(); 
    string yourExeDir = "C\\Program Files\\Your Directory"; 

    try 
    { 
     Directory.SetCurrentDirectory(yourExeDir); 
    } 
    catch (DirectoryNotFoundExeption dnfe) 
    { 
     MessageBox.Show("The specified directory does not exist. " + dnfe.Message); 
    } 

    if (!File.Exists(yourExe)) 
    { 
     MessageBox.Show("Can't find yourExe"); 
    } 
    else 
    { 
     Process.Start(yourExe); 
    } 

    try 
    { 
     //Set the current directory. 
     Directory.SetCurrentDirectory(currentDir); 
    } 
    catch (DirectoryNotFoundException dnfe) 
    { 
     MessageBox.Show("The specified directory does not exist. " + dnfe.Message); 
    } 

이것은 현재 작업 디렉터리를 .exe가있는 디렉터리로 전환하고 실행 한 다음 이전 작업 디렉터리가 있던 위치로 다시 전환합니다.