第四章 进程(5)进程的当前驱动器和目录

 

5、进程的当前驱动器和目录

当不提供全路径名时,Windows的各个函数就会在当前驱动器的当前目录中查找文件和目录。

系统将在内部保持对进程的当前驱动器和目录的跟踪。 由于该信息是按每个进程来维护的,因此改变当前驱动器或目录的进程中的线程,就可以为该进程中的所有线程改变这些信息。通过调用下面两个函数,线程能够获得和设置它的进程的当前驱动器和目录:

DWORD GetCurrentDirectory(DWORD cchCurDir, PTSTR pszCurDir);

BOOL SetCurrentDirectory(PCTSTR pszCurDir);

  1. 进程的当前目录

系统将对进程的当前驱动器和目录保持跟踪,但是它不跟踪每个驱动器的当前目录。

A: 可以使用C运行期函数_ chdir,而不是使用SetCurrentDirectory函数来变更当前目录。_ chdir函数从内部调用SetCurrentDirectory,但是_chdir 也能够添加或修改该环境变量,这样,不同驱动器的当前目录就可以保留。

B: 子进程的环境块不会自动继承父进程的当前目录。相反,子进程的当前目录将默认为每个驱动器的根目录。如果想要让子进程继承父进程的当前目录,该父进程必须创建这些驱动器名的环境变量。并在生成子进程前将它们添加给环境块。通过调用GetFullPathName函数父进程可以获得它的当前目录:

DWORD GetFullPathName(PCTSTR pszFile, DWORD cchPath,

PTSRT pszPath, PTSTR *ppszFilePart)

C: 进程的环境变量必须始终按字母顺序来排序。因此驱动器名的环境变量通常必须置于环境块的开始处。

原文地址:https://www.cnblogs.com/dyufei/p/2574006.html