-
[C#] - Working Directory.NET/CSharp 2019. 4. 16. 21:43
WorkingDirectory
다른 회사 프로그램에서 내가 개발중인 프로그램을 실행 하게하는 작업을 하고 있었다. 이상하게도 정상 적으로 작동이 되질 않았다.
기존에 개발을 해 두었던 내가 개발한 프로그램으로 실행 하였을 때에는 정상적으로 실행 되었던 상태로 이상하게 느껴졌다.
C# 개발을 오래했던 친구에게 물었더니 WorkingDirectory를 설정 을 해보라고 하더라
public static void ProcessStart(string fileName) { Process process = new Process(); process.StartInfo.WorkingDirectory = new FileInfo(fileName).Directory.FullName; process.StartInfo.FileName = fileName; process.Start(); }
임의의 테스트 프로그램을 만들고 위와 같이 샘플 코드를 작성하여 실행을 해보았다. 정상적으로 실행이 되는 거였다.
왜 정상적으로 실행이 되던 것이였을까?
원인을 찾아보니 A프로세스에서 B프로세스를 실행 시킬때 WorkingDirectory에 대한 설정이 없을경우 B프로세스의 WorkingDirectory가 A프로세스가 위치한 프로그램 파일 위치 경로로 잡히는 거였다.
문제가 있었기에 연동을 하던 회사 부장님께 WorkingDirectory 설정을 요청드렸다. 부장님께서는 회신 메일로 아래 샘플이 권장하는 방식이라면서 코드를 보내주셨다.
Process process = Process.GetCurrentProcess(); Directory.SetCurrentDirectory(Path.GetDirectoryName(process.MainModule.FileName));
메인 함수 상단에 위의 코드를 추가 하였다. 정상적으로 잘 작동 하였다. 시간 날때 WorkingDirectory 에 대해서 더 자세하게 찾아봐야겠다.
'.NET > CSharp' 카테고리의 다른 글
[C#] - .NET Framework 3.5 TLS 1.2 적용하기 (0) 2020.06.15 [C#] - WinForm 특정 윈도우 Show, TopMost 처리 (0) 2019.10.07 [C#] - WinForm PropertyGrid 에 표시되는 Enum 값 이름 변경하기 (0) 2018.12.25 [C#] - WinForm Form Esc 키 눌렀을때 종료하기 (0) 2018.09.13 [C#] - Debug 모드 일때 실행과 디버그 구분하기 (0) 2018.09.13