CreateProcess无法运行错误代码为2的批处理文件

时间:2014-08-14 08:31:35

标签: windows createprocess file-not-found

我正在创建一个执行批处理文件的子进程

success = CodebenderccAPI::CreateProcess(
    NULL,
    (LPWSTR)command.c_str(),     // command line
    NULL,                        // process security attributes
    NULL,                        // primary thread security attributes
    TRUE,                        // Inherit pipe handles from parent process
    CREATE_NEW_CONSOLE,          // creation flags
    NULL,                        // use parent's environment
    current_dir,                 // use the plugin's directory
    &si,                         // __in, STARTUPINFO pointer
    &pi);                        // __out, receives PROCESS_INFORMATION

上面的代码经过测试,可以在各种机器上运行,但最近在Windows 7机器上失败了,我仍在试图找出原因......

我确保用户对安装批处理文件的文件夹具有管理权限,并确保批处理文件位于工作目录中。此外,我禁用了防病毒软件(以验证它没有导致问题)并再次尝试没有成功。 CreateProcess始终失败,错误代码为2:ERROR_FILE_NOT_FOUND。

任何可能导致失败的想法?

1 个答案:

答案 0 :(得分:0)

最后,我设法找出导致CreateProcess失败的原因。 打开cmd并cd到批处理文件所在的文件夹,然后运行批处理文件没有任何问题。在此之后,我通过文件系统导航到该文件夹​​,然后双击批处理文件来运行它。它失败并显示错误消息“Windows无法找到 the_path_to batch_file 。请确保您已正确键入名称并重试。” 根据{{​​3}},上述错误与COMSPEC条目有关。检查其在注册表中的值,发现它与this post不同。将其值更新为默认值,问题已解决!