Как узнать директорию исполняемого файла в Windows?

Рейтинг: 2Ответов: 2Опубликовано: 07.04.2015

Консольная программа на C++ должна сама себя при запуске прописывать в автозагрузку Windows (через реестр). Важная деталь заключается в том, что мы не знаем места расположения этой программы на диске. Собственно, как это можно сделать?

Ответы

▲ 6Принят

Чтобы в Windows достать директорию из которой запущена программа используйте вызов _getcwd из direct.h примерно так:

#include <stdio.h> 
#include <direct.h>

char current_work_dir[FILENAME_MAX];
_getcwd(current_work_dir, sizeof(current_work_dir));

Также можно попробовать WinAPI вызов GetModuleFileName или посмотреть значение argv[0]

▲ 3

так

#include <windows.h>
#include <tchar.h>

LPTSTR ExtractFilePath(LPCTSTR FileName, LPTSTR buf)
{  
    int i, len = lstrlen(FileName);
    for(i=len-1; i>=0; i--)
    {
        if(FileName[i] == _T('\\'))
            break;
    }
    lstrcpyn(buf, FileName, i+2);
    return buf;
}

// szFileName - содержит путь к exe-файлу
// szPath - содержит путь к папке, в которой находится exe-файл
TCHAR szFileName[MAX_PATH], szPath[MAX_PATH];
GetModuleFileName(0, szFileName, MAX_PATH);
ExtractFilePath(szFileName, szPath);