Функция AfxGetStaticModuleState () делает свое дело.
Если вы вызываете его внутри dll, функции возвращают дескриптор dll, если при вызове внутри exe он возвращает дескриптор исполняемого файла.
DWORD size;
TCHAR fileName [MAX_PATH];
HMODULE hModule = AfxGetStaticModuleState()->m_hCurrentInstanceHandle;
::GetModuleFileName (hModule, fileName, size);