sách gpt4 ai đã đi

c++ - CreateProcess 忽略 lpCurrentDirectory/父工作目录

In lại 作者:行者123 更新时间:2023-11-30 04:31:23 25 4
mua khóa gpt4 Nike

我正在尝试使用 CreateProcess 从 C++ 应用程序执行外部进程。

启动的应用程序在查找其目录中存在的 dll 时失败。

使用 Process Explorer(来自 sysinternals)检查 executwd 进程显示进程工作目录是 c:\windows,而不是父工作目录。

使用 lpCurrentDirectory 对工作目录进行硬编码也无济于事。

进程确实使用系统命令正确执行。

biên tập 有问题的目录不是模块目录,而是当前工作目录。

模块目录按预期搜索,但不包含 dll(将 sll 复制到模块目录是可行的 - 但它是一种解决方法)

1 Câu trả lời

当您使用 CreateProcess 函数时,搜索的第一个目录是包含用于创建调用进程的图像文件的目录。这允许找到与进程关联的私有(private)动态链接库 (DLL) 文件,而无需添加进程的已安装目录到 PATH 环境变量。如果找不到Dll文件,系统会在系统文件夹中搜索这些文件,例如system32或%windir%。

可以使用 SetDllDirectory 函数更改搜索路径。建议使用此解决方案,而不是使用 SetCurrentDirectory 或硬编码 DLL 的完整路径。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682600%28v=vs.85%29.aspx

关于c++ - CreateProcess 忽略 lpCurrentDirectory/父工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8224271/

25 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com