c# 실행파일의 폴더경로

인터넷에 검색시 여러가지 방법이 나오지만 윈도우 시작시 실행될 경우 작동하지 않는 경우가 생겨서

어떤 방법이 권장할 수 있는 방법인지 테스트해보았다.

 

윈도우 시작시 확인한 모습

 

1. System.Windows.Forms.Application.StartupPath

우선 WPF에서도 윈폼에서 쓰이는 방법인 Application.StartupPath를 사용하는것이 가능하다.

단, 앞에 System.Windows.Forms.을 추가해야 한다.

윈폼에서 사용하는 방법으로 WPF에서도 정확하게 작동함을 알 수 있다.

윈폼에 정말 편리한 기능이 많아서 WPF 프로그램을 만들때 아쉬울때가 많다.

물론 윈폼의 기능 대부분을 이용할 수 있지만...

 

2. Directory.GetCurrentDirectory()

프로그램의 실행파일의 폴더경로를 알아내지 못하고 C:\Windows\system32의 경로를 출력한다.

윈도우가 실행된 이후에는 정상작동하지만 윈도우 시작중에는 정상적으로 작동되지 않는다.

 

3. Environment.CurrentDirectory

위와 마찬가지로 실행파일의 폴더경로를 알아내지 못한다.

인터넷 검색시 Application.StartupPath은 윈폼의 명령어이기 때문에 WPF에서는 Directory.GetCurrentDirectory()나 Environment.CurrentDirectory를 사용하라고 하는데 오히려 Application.StartupPath가 정상작동하고 나머지 두개는 정상작동되지 않는다.

 

4. AppDomain.CurrentDomain.BaseDirectory

폴더경로  뒤에 \가 더 붙는 점 외에는 정상작동한다. WPF에서는 이 코드를 사용하는게 좋을 것 같다.

 

번외.

실행파일 자체의 경로를 알아내는 System.Reflection.Assembly.GetExecutingAssembly().Location은 윈도우시작시에도 정상적으로 작동한다.

따라서 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) 으로 실행파일의 폴더경로를 알아낼수도 있으나 너무 길기 때문에 AppDomain.CurrentDomain.BaseDirectory를 사용하는게 적당할 것 같다.