问题代码
if (!CreateProcess(NULL,L"pela.exe",NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
return 0;
}
如果CreateProcess的第二个参数字符串是常量或者是储存在堆中的就会被写保护,崩溃。如果字符串定义到栈或者全局变量就不存在此问题了。
正确的办法
WCHAR strCmdLine[] = L"pela.exe";
if (!CreateProcess(NULL,strCmdLine,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
return 0;
}
下面的办法会崩溃
WCHAR *strCmdLine = L"pela.exe";
if (!CreateProcess(NULL,strCmdLine,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
return 0;
}