CreateProcess()lpCurrentDirectory无效

时间:2014-03-10 09:14:35

标签: c++ winapi createprocess

我想启动一个进程(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!

1 个答案:

答案 0 :(得分:2)

不,那不行。在启动期间,新进程不会以该目录作为“当前”目录启动。而是在进程启动后设置当前目录。

如果您希望您的流程在特定目录中启动,则需要使用SetCurrentDirectory或其中一个或多或少的可移植变体(例如_chdir)。