Visual C++ 에서 실행파일의 폴더 얻는 법

Visual C++에서 프로그램을 만들다보면 종종 실행파일이 있는 폴더의 위치를 읽어와야 하는 경우가 발생한다.
이 때 쉽게 사용하는 함수는 물론 GetCurrentDirectory()다.

TCHAR szFolder[MAX_PATH] = "";
::GetCurrentDirectory(MAX_PATH - 1, szFolder);
CString csFolder(szFolder);

그런데, 이 함수는 정확히는 현재 폴더를 읽어오는 것이지, 실행파일이 있는 폴더를 읽는 것이 아니다.
실행파일이 있는 폴더의 위치를 읽어오려면 아래와 같이 GetModuleFileName() 함수를 응용해서 활용해야 한다.

CString csFolder;
GetModuleFileName(NULL, csFolder.GetBuffer(_MAX_PATH), _MAX_PATH);
csFolder.ReleaseBuffer();
csFolder = csFolder.Left(csFolder.ReverseFind(_TCHAR('\\')));

알려질만큼 알려졌지만, 생각난 김에 슬쩍 포스팀.