创建进程() 错误

CreateProcess() Error

本文关键字:错误 进程 创建      更新时间:2023-10-16
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 变量或文本字符串(的指针。如果此参数是常量字符串,则该函数可能会导致访问冲突。