我想启动一个进程(exe文件),如果我将完整路径附加到我的命令行(lpCommandLine param),一切都很好但是如果我将lpCurrentDirectory设置为[STARTDIR]系统说:
ERROR_FILE_NOT_FOUND
开始这个过程:
CreateProcessA(NULL, // No module name (use command line)
&command[0], // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
CREATE_NEW_CONSOLE, // No creation flags
NULL, // Use parent's environment block
[NULL] or [STARTDIR], // Use parent's starting directory
startupInfo, // Pointer to STARTUPINFO structure
processInfo) // Pointer to PROCESS_INFORMATION structure
- >在这个文件夹中有一些其他的dll和我想要启动的exe
为什么这不起作用?
THX!
答案 0 :(得分:2)
不,那不行。在启动期间,新进程不会以该目录作为“当前”目录启动。而是在进程启动后设置当前目录。
如果您希望您的流程在特定目录中启动,则需要使用SetCurrentDirectory
或其中一个或多或少的可移植变体(例如_chdir
)。