我正在创建一个执行批处理文件的子进程
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。
任何可能导致失败的想法?
答案 0 :(得分:0)
最后,我设法找出导致CreateProcess失败的原因。 打开cmd并cd到批处理文件所在的文件夹,然后运行批处理文件没有任何问题。在此之后,我通过文件系统导航到该文件夹,然后双击批处理文件来运行它。它失败并显示错误消息“Windows无法找到 the_path_to batch_file 。请确保您已正确键入名称并重试。” 根据{{3}},上述错误与COMSPEC条目有关。检查其在注册表中的值,发现它与this post不同。将其值更新为默认值,问题已解决!