C#에서 실행되는 폴더 알아 내기

(윈도우 서비스, 테스트 프로젝트, ...)


참조 URL
  1. http://stackoverflow.com/questions/1658518/getting-the-absolute-path-of-the-executable-using-c



윈도우 서비스나 테스트 프로젝트에서 실행을 하면 내가 코딩한 DLL이 위치하는 폴더와 실제 실행되는 프로세스의 위치가 상이한 경우가 발생할 수 있다. 이럴경우 기대한 경과와 다르게 에러가 발생할 수 있다. 예로 파일을 읽어 오는 부분이나 환경설정을 읽어 오는 부분에서 경로가 맞지 않아 에러가 발생할 수 있다. 아래 코드와 같이 실행되는 프로세스나 어셈블리의 위치를 알아 내는 방법이 몇가지로 제공을 하고 있다.



var path1 = Environment.CurrentDirectory;
var path2 = Directory.GetCurrentDirectory();
var path3 = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName;
var path4 = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
var path5 = Thread.GetDomain().BaseDirectory;
var path6 = AppDomain.CurrentDomain.BaseDirectory;

[코드1] 폴더 위치 가져오기


위 "코드1"에서와 같이 폴더를 알아 낼 수 있지만 path1과 path2는 실행되는 프로세스를 중심으로 폴더를 알아내고 path3 ~ path6은 어셈블리를 기준으로 폴더를 알아내는 구조로 되어 있다.



위와 같은 코드를 윈도우 서비스에서 실행하면 아래와 같은 폴더의 위치가 달라지게 된다.


path1 : C:\Windows\System32

path2 : C:\Windows\System32

path3 : C:\User\xxxx\Visual Studio\Project\xxxx

path4 : C:\User\xxxx\Visual Studio\Project\xxxx

path5 : C:\User\xxxx\Visual Studio\Project\xxxx

path6 : C:\User\xxxx\Visual Studio\Project\xxxx



위와 같이 값을 확인 할 수 있을 것이다.


필요에 따라 값을 가져오는 방법을 달리 하여 가져오면 될 것이다.


 


 

 


 









+ Recent posts