创建进程() 错误
CreateProcess() Error
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");
它不断抛出错误(2(-> The System cannot find the file specified
。
我不知道怎么了。 我还尝试使用"Calc.exe",它在同一个目录中,但它不起作用。
使用 L
前缀创建宽字符串:
L"D:\test dir 1\Calc.exe";
将字符串文本转换为不同的字符宽度不会使字符串更宽。
除了已经指出的字符串类型问题之外,第二个参数(lpCommandLine(必须指向可写缓冲区,而不是常量字符串。 您可以通过按如下方式声明它来执行此操作:
WCHAR procArg[] = L"blacknull";
MSDN 中记录了这一点:"此函数的 Unicode 版本 CreateProcessW 可以修改此字符串的内容。因此,此参数不能是指向只读内存(如 const 变量或文本字符串(的指针。如果此参数是常量字符串,则该函数可能会导致访问冲突。
相关文章:
- boost::进程间消息队列引发错误
- 进程返回 -1073741819 (0xC0000005) 错误
- gcc 找不到 -lgcc, g++.exe: 错误: 创建进程: 没有这样的文件或目录
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- 64 位进程中的 AnyCPU C# DLL 无法引用 64 位C++ DLL(给出错误:无法加载文件或程序集)
- Boost进程"系统"功能中的错误处理
- 获取进程内存信息失败,错误 6 句柄无效
- 通过服务启动进程后,从SHGetKnownFolderPath 0x80070005错误
- 提升进程间named_mutex导致分段错误
- 加速进程间:管理共享内存错误
- 创建进程失败,意外错误
- 多线程中的 std::basicstring 的运行时分段错误C++点燃进程
- 提升 1.58.0 窗口进程.h 错误
- 创建进程使用路径时出现错误事件:类型 "char *" 的 E0167 参数与类型 "LPWSTR" 的参数不兼容
- Ubuntu E:子进程 /usr/bin/dpkg 返回错误代码 (1)
- 提升 vs2010 上的进程错误
- C++ Mingw32 创建进程() 失败,错误代码 2:系统找不到指定的文件
- MPI_GROUP_EXCL试图排除进程等级0时致命错误.C
- 读取进程内存上的错误 299
- 分段错误进程返回139(0x8b)