簡體   English   中英

如何獲取在Windows上運行的C中的可執行文件的路徑?

[英]how to get path to executable in C running on Windows?

-getcwd至少在使用VS 2010進行調試時不會返回它。

-i由於我使用的用戶界面工具包而無法訪問main的參數

所以有什么事嗎?

PS。 在將其標記為重復項之前,請注意限制

使用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);
}

傳遞NULL作為GetModuleFileName的第一個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM