每个进程都有一个与之相关联的当前目录,缺省时,文件操作在进程的当前目录下进行。如您所说,按照习惯,建立临时文件时只需给出文件名,然后系统将当前目录连接此文件名得到全路径。但是,如果在程序执行中涉及到了目录操作,例如打开其他目录下的文件等,则进程的当前目录改变,所以发生了临时文件建立到了其他地方的情况。可以调用GetCurrentDirectory()和SetCurrentDirectory()函数来解决,在可能改变默认当前目录前调用GetCurrentDirectory(),把目录信息保存下来,然后在需要恢复的时候调用SetCurrentDirectory()即可。这两个函数的原型如下所示:
DWORD GetCurrentDirectory(
  DWORD nBufferLength,  // size of directory buffer
  LPTSTR lpBuffer       // directory buffer
);BOOL SetCurrentDirectory(
  LPCTSTR lpPathName   // new directory name
);如果需要进一步的信息,您可以参看:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/filesio_6g6x.asp和
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/filesio_3fg9.asp- 微软全球技术中心 VC技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。