搜索.exe的路径

时间:2013-10-28 15:47:59

标签: c++ windows path

所以我正在寻找一段代码,允许我搜索正在执行的文件的路径。例如,我正在做一个用于pendrives的自动运行程序(例子)但我不知道知道它是否会以D:,F:,G:或其他任何方式结束,所以程序会搜索它自己的路径并根据使用某些'if'语句找到的路径打开另一个文件。

这就是我的想法:

    #include <stdlib.h>
    #include <iostream>
    using namespace std;

    int main () {
    // Insert 'search path' code and needed variables here.

    if (-ThePath- == "d:\\AutoRun.exe")
        {
         system ("d:\\MyFolder\\OtherProgram.exe");
        }
    else if (-ThePath- == "f:\\AutoRun.exe")
        {
         system ("f:\\MyFolder\\OtherProgram.exe");
        }
    else if (-ThePath- == "g:\\AutoRun.exe")
        {
         system ("g:\\MyFolder\\OtherProgram.exe");
        }
    else
        {
         cout << "An error ocurred.\n";
         cout << "Press enter to exit...\n";
         cin.get();
        };
    return 0;
    }

有没有办法可以做到这一点?

2 个答案:

答案 0 :(得分:8)

GetModuleFileName:文档here

EDITED - Pedro,微软的示例代码处理了很多事情。要获取文件路径,您只需要:

TCHAR szPath[MAX_PATH];

if( !GetModuleFileName( NULL, szPath, MAX_PATH ) ) {

    // handle error in GetModuleFileName

} else {

    // now, szPath contains file path

};

答案 1 :(得分:2)

在标准C ++中,argv [0]包含可执行文件的名称。对于以正常方式调用的程序,这将是Windows上可执行文件的路径。