본문 바로가기
프로그래밍/C++

C++ ] 현재 실행중인 실행파일의 경로 얻기, GetModuleFileName

by eteo 2023. 9. 19.

 

 

현재 작업 디렉토리의 경로는 GetCurrentDirectory 함수로 확인할 수 있다.

 

한편 실행파일이 위치한 경로의 경우 운영체제에 따라 확인하는 방법이 다른데 윈도우에서는 Windows.h 를 포함하고 GetModuleFileName() 함수를 사용하면 현재 실행중인 실행파일의 path를 알 수있다.

 

GetModuleFileName는 유니코드를 사용하냐 ANSI를 사용하냐에 따라 GetModuleFileNameW 또는 GetModuleFileNameA로 정의된다.

 

 

wchar_t exePath[MAX_PATH];
GetModuleFileName(NULL, exePath, MAX_PATH);

wchar_t* folderPath = new wchar_t[wcslen(exePath) + 1];
wcscpy(folderPath, exePath);
wchar_t* lastBackslash = wcsrchr(folderPath, L'\\');
if (lastBackslash != NULL)
{
    *lastBackslash = L'\0';
}

 

 

MAX_PATH는 Windows 운영 체제에서 파일 경로 및 파일 이름의 최대 길이를 나타내는 상수로 260으로 정의되어 있다.

 

그리고 문자열에서 특정 문자의 위치를 뒤에서부터 찾는 strrchr 또는 _tcsrchr 또는 wcsrchr 함수를 같이 사용하면 실행파일이 포함된 폴더 경로 또는 확장자를 제외한 파일명까지의 경로 등을 얻을 수 있다.