用某个程序打开一个文件会改变程序的工作目录吗?

时间:2011-05-12 11:57:34

标签: c++ file winapi working-directory

我有一个文件保存到我的桌面,当我用我的程序打开它时,工作目录更改为桌面,这意味着我的程序无法加载它在工作目录中搜索这些文件时所需的一些文件。有没有办法可以阻止工作目录这样改变?

5 个答案:

答案 0 :(得分:3)

你可以设置一个标志来避免当前目录被更改名为OFN_NOCHANGEDIR

http://msdn.microsoft.com/en-us/library/ms646839(v=vs.85).aspx

答案 1 :(得分:2)

您可以在启动时保存工作目录并使用绝对路径。事实上,总是打开具有绝对路径的文件会更好,除非你真的想依赖当前的工作目录。

答案 2 :(得分:2)

您最好确定进程位置,然后将其用作查找其他文件的位置的关键字?可以通过多种方式启动程序,这会影响工作目录。

请参阅:The answer here以获取有关如何获取进程位置和删除可执行文件名的详细说明(请参阅注释)

基本上,你使用: GetModuleFileNameGetModuleFileNameEx

然后:   PathRemoveFileSpec删除文件名

答案 3 :(得分:2)

打开文件不会更改当前目录。也许你使用常见的打开文件对话框? Here is这篇文章将解释有关如何更改当前目录的所有内容。

答案 4 :(得分:1)

使用SetCurrentDirectory来做到这一点。 您可以使用GetModuleFileName

找到可执行文件
TCHAR szFileName[MAX_PATH];

GetModuleFileName( NULL, szFileName, MAX_PATH )

... then compute the correct directory
SetCurrentDirectory(path);
相关问题