我正在维护一些用Delphi 6和C++ Builder 4编写的旧应用程序.使用任一编译器编译的应用程序都会出现一种看似奇怪的现象.即使将.exe复制到其他目录,它们也会记住它们的默认工作目录.什么是确定的默认工作目录,以及如何知道什么时候默认工作目录的机理是不相同的目录中的.exe位于?
例如:比方说,我的源代码和编译的32位PE MyApp.exe在C:\CppBuilder\Projects\MyApp.然后我MyApp.exe将该文件夹中的其他文件复制到USB闪存盘F:\.然后,在资源管理器中,双击我MyApp.exe在F:\和应用程序启动.用fopen打开的文件仍然是打开的C:\CppBuilder\Projects\Myapp.如果我重命名或删除文件夹C:\CppBuilder\Projects\Myapp,则输入文件将F:\按照我的预期打开.此外,文件打开对话框的默认文件夹的工作方式类似.
这个的潜在机制是什么?
对不起,如果这是一个愚蠢的问题,但我真的找不到答案,我很尴尬地说,而且它一直让我发疯.我想确定文件的打开位置,而不使用文件名中的完整路径.再说一遍,我很抱歉.如果你知道答案,请帮助我.