0

在阅读工作目录和脚本目录(或包含可执行文件映像的目录)目录是什么时,我开始想知道,Windows 是如何知道将哪个目录作为工作目录传递给进程的,何时当我启动一个给定的程序时,我实际上并没有指定工作目录:

工作目录-显式-隐式-Windows

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

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

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

4

1 回答 1

0

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

创建过程

该参数稍后存储在结构的未记录属性中RTL_USER_PROCESS_PARAMETERS文档链接_

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

在此处输入图像描述

相关的stackoverflow问题:

于 2013-04-25T09:05:05.793 回答