【发布时间】:2010-09-13 15:40:33
【问题描述】:
我正在尝试让 CreateProcess 或 CreateProcessW 执行名称 http://msdn.microsoft.com/en-us/library/ms682425.aspx 上的文档,我需要确保 lpApplicationName 不为 NULL,然后 lpCommandLine 最多可以包含 32,768 个字符。
我试过了,但我得到了 ERROR_PATH_NOT_FOUND。
我更改为 CreateProcessW,但仍然出现相同的错误。当我按照http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx 中的描述在 lpApplicationName 前加上 \\?\ 时,在调用 CreateProcessW 时我得到一个不同的错误,这让我觉得我更接近一点:ERROR_SXS_CANT_GEN_ACTCTX。
我对 CreateProcessW 的调用是:
CreateProcessW(w_argv0,arg_string,NULL,NULL,0,NULL,NULL,&si,&ipi);
其中 w_argv0 是 \\?\<long absolute path>\foo.exe.
arg_string 包含 "
si 设置如下:
memset(&si,0,sizeof(si)); si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE;>而 pi 为空,如:
memset(&pi,0,sizeof(pi));我查看了系统事件日志,每次尝试使用事件 id 59 进行此操作时都会出现一个新条目,源 SideBySide: Generate Activation Context failed for .Manifest。参考错误信息:操作成功完成。
我尝试执行的文件在 为了澄清, 无论我是否嵌入其清单,我都会收到相同的错误。清单被命名为 foo.exe.manifest,当它没有嵌入时,它与可执行文件位于同一目录中。它包含: 有人知道如何让它工作吗?可能: 调用 CreateProcess 或 CreateProcessW 以在路径中执行进程的其他方式 > MAX_PATH 个字符 我可以在清单文件中做些什么 我在 XP SP2 上使用 Visual Studio 2005 构建并运行本机。 感谢您的帮助。
【问题讨论】:
标签: winapi createprocess max-path