在什么结构中Windows保存有关进程的工作目录(或当前目录)的数据?

时间:2013-04-25 08:35:17

标签: windows process structure working-directory

在阅读工作目录以及脚本目录(或包含可执行文件图像的目录)目录的内容时,我开始想知道,Windows如何知道,将哪个目录传递给流程目录,当我启动给定程序时实际上没有指定工作目录时:

working directory-explicit-implicit-Windows

  • 通过命令行,我只传递脚本目录的位置(〜作为第0个参数)。请注意,脚本目录不是工作目录。

我知道我可以使用GetCurrentDir()来检索程序内部的工作目录,但我想知道,Windows是否有任何“内部”结构存储给定进程的工作目录? (如果是的话,是否有关于该结构的任何文件)。

我发现了以下与进程相关的结构,但它们似乎都不包含工作目录属性。

1 个答案:

答案 0 :(得分:0)

shell(或启动脚本的程序)调用CreateProcess()函数。 CreateProcess函数具有lpCurrentDirectory参数。 shell(或启动脚本的任何其他程序)隐式设置lpCurrentDirectory参数 (〜不通过脚本的参数)。

CreateProcess

该参数稍后存储在RTL_USER_PROCESS_PARAMETERS结构的未记录的属性中。 msdnLinkdocLink

  • 请注意:无证件(这就是为什么我首先没有在msdn上找到信息)。

enter image description here

相关的stackoverflow问题: