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

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

本文介绍了如何在Windows上运行的C中获取可执行文件的路径?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

-getcwd does not return it at least when debugging with VS 2010.

-由于我使用的用户界面工具包,我无法访问 main 的参数

-i have no access to main's arguments because of the user interface kit i'm using

所以有什么可做的吗?

附注.在将其标记为重复之前,请注意限制

PS. please note the restrictions before tagging this as duplicate

推荐答案

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

Use GetModuleFileName() and pass NULL as the first argument:

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

这篇关于如何在Windows上运行的C中获取可执行文件的路径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 18:38