【发布时间】:2011-11-22 09:07:12
【问题描述】:
我正在尝试使用 CreateProcess 从 c++ 应用程序执行外部进程。
在查找其目录中存在的 dll 时,启动的应用程序失败。
使用 Process Explorer(来自 sysinternals)检查 executwd 进程显示进程工作目录是 c:\windows,而不是父工作目录。
使用 lpCurrentDirectory 对工作目录进行硬编码也无济于事。
使用系统命令,进程确实正确执行。
编辑 有问题的目录不是模块目录,而是当前工作目录。
模块目录按预期搜索,但不包含 dll (将 sll 复制到模块目录有效 - 但它是一种解决方法)
【问题讨论】:
-
Windows 在加载 DLL 时首先查看的位置是加载可执行模块的目录。如果您的 DLL 在那里,那么它们将被找到。问题显然不是你想的那样。
标签: c++ winapi createprocess