首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CreateProcess()错误

CreateProcess()错误
EN

Stack Overflow用户
提问于 2012-01-13 07:52:25
回答 2查看 8.5K关注 0票数 1
代码语言:javascript
运行
复制
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
memset(&pi, 0, sizeof(pi));
si.cb = sizeof(si);

LPCWSTR procName =(LPCWSTR)"D:\\test dir 1\\Calc.exe";
LPWSTR procArg   =(LPWSTR)"blacknull";

if(CreateProcess(procName,procArg,0,0,0,CREATE_DEFAULT_ERROR_MODE,0,0,&si,&pi))
{
    //do some work
}

printf( "CreateProcess failed (%d).\n", GetLastError());
     system("Pause");

它一直抛出Error(2)-> The System cannot find the file specified

我不知道出了什么问题。我还尝试在同一目录中使用"Calc.exe“。但它不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-13 08:11:11

您可以使用L前缀来生成宽字符串:

代码语言:javascript
运行
复制
L"D:\\test dir 1\\Calc.exe";

将字符串文字转换为不同的字符宽度不会使字符串变宽。

票数 5
EN

Stack Overflow用户

发布于 2012-01-13 09:09:03

除了已经指出的字符串类型问题之外,第二个参数(lpCommandLine)必须指向可写缓冲区,而不是常量字符串。您可以通过如下方式声明它来完成此操作:

代码语言:javascript
运行
复制
WCHAR procArg[] = L"blacknull";

This is documented in MSDN:“此函数的Unicode版本CreateProcessW可以修改此字符串的内容。因此,此参数不能是指向只读内存(如常量变量或文字字符串)的指针。如果此参数是常量字符串,则此函数可能会导致访问冲突。”

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8844076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档