如何在Windows上运行的C中获取可执行文件的路径?

时间:2012-02-02 13:10:29

标签: c windows

-getcwd至少在使用VS 2010进行调试时不会返回它。

由于使用了

的用户界面工具包,

-i无法访问主要参数

所以有什么可做的吗?

PS。请在将此标记为重复之前注意限制

2 个答案:

答案 0 :(得分:5)

使用GetModuleFileName()并传递NULL作为第一个参数:

DWORD last_error;
DWORD result;
DWORD path_size = 1024;
char* path      = malloc(1024);

for (;;)
{
    memset(path, 0, path_size);
    result     = GetModuleFileName(0, path, path_size - 1);
    last_error = GetLastError();

    if (0 == result)
    {
        free(path);
        path = 0;
        break;
    }
    else if (result == path_size - 1)
    {
        free(path);
        /* May need to also check for ERROR_SUCCESS here if XP/2K */
        if (ERROR_INSUFFICIENT_BUFFER != last_error)
        {
            path = 0;
            break;
        }
        path_size = path_size * 2;
        path = malloc(path_size);
    }
    else
    {
        break;
    }
}

if (!path)
{
    fprintf(stderr, "Failure: %d\n", last_error);
}
else
{
    printf("path=%s\n", path);
}

答案 1 :(得分:2)

NULL作为GetModuleFileName的第一个参数传递。