获取调用程序的原始位置

时间:2016-05-16 12:46:46

标签: c windows unistd.h getcwd

有没有办法知道程序最初在C中生成的目录?我希望我的程序知道它在计算机中的位置。我已尝试在_getcwd()中使用direct.h。我还尝试getcwd()使用unistd.h。但这是问题所在。如果我将PATH添加到程序的目录中,函数_getcwd()getcwd()路径将返回我调用程序的路径。因此,如果我在dekstop中运行该程序,它将返回桌面的路径。我已经尝试使用this方法,但它无法解决问题。它返回调用路径的值。我想知道用什么函数来知道程序的路径而不是程序被调用的路径。 我应该使用什么功能?

1 个答案:

答案 0 :(得分:0)

当前的工作目录没有任何用处。文件系统中的可执行映像的位置与当前工作目录之间没有任何关联,除了巧合。

您可以通过调用_get_wpgmptr(Visual Studio附带的CRT的Microsoft特定扩展)或GetModuleFileName(传递NULL for <}来检索可执行文件的完全限定路径。 em> hModule ),并通过调用PathRemoveFileSpec(或Windows 8及更高版本的PathCchRemoveFileSpec)来提取路径。