【问题标题】:Get full directory of application Windows [duplicate]获取应用程序Windows的完整目录[重复]
【发布时间】:2012-10-04 16:09:44
【问题描述】:

可能重复:
Get path of executable

我有一个 C++ 应用程序,如何获取我的完整目录(该应用程序的 .exe 文件所在的位置)?

编辑:操作系统 - Windows

【问题讨论】:

    标签: c++ file path


    【解决方案1】:

    窗户:

    WCHAR path[MAX_PATH];
    GetModuleFileName(NULL, path, ARRAYSIZE(path));
    

    Linux:

    char buffer[MAX_PATH];
    readlink("/proc/self/exe", buffer, MAX_PATH);
    

    【讨论】:

    • 谢谢@Barter,我有一个Windows,但它返回带有.exe名称的路径,我怎样才能从路径末尾剪切这个exe名称?
    • 所有你需要做的就是找到最后一个 \ 并将 NULL 放在那个地方。或使用PathRemoveFileSpec
    【解决方案2】:

    没有很好的跨平台解决方案,但是,您可以在所有主要平台上执行此操作:

    • 在 Linux 上:读取 /proc/self/exe 特殊文件

    char buf[PATH_MAX];
    ssize_t len;
    if ((len = readlink("/proc/self/exe", buf, bufsize)) != -1) {
        // buf contains the path
    } else {
        // error
    }
    
    • 在 Mac OS X 上:使用 _NSGetExecutablePath() 函数(来自 man 3 dyld

    #include <stdint.h>
    #include <limits.h>
    
    uint32_t size = PATH_MAX;
    char buf[PATH_MAX];
    if (_NSGetExecutablePath(buf, &size) != -1) {
        // buf now contains the path
    } else {
        // error
    }
    
    • 在 Windows 上:以 NULL 作为句柄调用 GetModuleFileName()

    #include <windows.h>
    
    char buffer[1024];
    if (GetModuleFileName(NULL, buffer, sizeof(buffer)) != 0) {
        // buffer contains the path
    } else {
        // error
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      相关资源
      最近更新 更多