如何设置正在运行的程序的应用程序路径?

时间:2010-06-01 02:47:19

标签: c++ path

我有一个由另一个程序执行的程序。正在执行的程序需要位于其自己位置[相同文件夹]的文件。如果我调用myfile.open(“xpo.dll”),我可能会收到错误,因为我没有传递[fullpath + name + extension]。正在执行的程序可能会根据安装路径改变路径。因此,我想知道是否有办法获取应用程序路径[应用程序所在的位置]并设置它,以便当另一个程序从另一个路径执行时,一切都可以正常工作......?

[使用不带.NET Framework的C ++]

感谢。

2 个答案:

答案 0 :(得分:1)

使用GetModuleFileName并为hModule传递NULL。

DWORD GetModuleFileName(
    HMODULE hModule,   // handle to module
    LPTSTR lpFilename, // path buffer
    DWORD nSize        // size of buffer
);

答案 1 :(得分:0)

首先,我在其他语言中遇到了很多这个问题,并且发现Process Monitor(http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)对于找出当前正在尝试访问的文件夹非常有用。

这样做没有标准功能。

  1. 想一想,你试过做myfile.open“./ xpo.dll”吗?

  2. 如果是控制台应用程序,您可以使用POSIX getcwd函数:http://www.dreamincode.net/code/snippet77.htm

  3. 如果它是Windows应用程序并且您可以使用Windows API,则可以使用GetModuleFileName ...请在此处查看此问题的第二个回复:How do I get the directory that a program is running from?