VC++/MFCで実行ファイルのパスを取得

// 実行ファイルのパスを取得
CString GetModulePath()
{
    // 実行ファイルのパス
    CString modulePath = _T("");
    // ドライブ名、ディレクトリ名、ファイル名、拡張子
    wchar_t path[_MAX_PATH], drive[_MAX_PATH], dir[_MAX_PATH], fname[_MAX_PATH], ext[_MAX_PATH];

    // 実行ファイルのファイルパスを取得
    if (::GetModuleFileName(NULL, path, _MAX_PATH) != 0)
    {
        // ファイルパスを分割
        ::_wsplitpath_s(path, drive, dir, fname, ext);
        // ドライブとディレクトリ名を結合して実行ファイルパスとする
        modulePath = CString(drive) + CString(dir);
    }

    return modulePath;
}