2013-11-15 8 views
4

프로세스가 시작되어 실행 중인지 확인하기 위해 연결 유지 서비스를 작성하고 있습니다. 다른 작업 디렉토리에서 동일한 이름을 가진 여러 프로세스가 있습니다.ProcessStartInfo.WorkingDirectory 속성이 비어 있습니다.

따라서 고유 식별자로 WorkingDirectory 속성을 사용하고 싶습니다. 그러나 이러한 모든 속성을 조사 할 때 값은 비어 있습니다.

여기에 일부 코드입니다 :

foreach (Process process in Process.GetProcesses()) 
    if (!string.IsNullOrWhiteSpace(process.StartInfo.WorkingDirectory)) 
     Console.WriteLine("Winning!!!"); 

없이 말을, 나는 경력이 아니에요.

답변

4

Process.MainModuleProcessModule.FileName 속성을 사용하십시오.

foreach (Process process in Process.GetProcesses()) 
{ 
    string executableFilePath = process.MainModule.FileName; 
    string executableDirectory = Path.GetDirectoryName(executableFilePath); 
} 

언제든지 프로세스를 종료 할 수 있습니다. 프로세스가 종료 (또는 종료)되는 동안 우연히 프로세스의 MainModule이 쿼리되면 예외가 발생합니다.

+0

Perfect! 감사. –

관련 문제