使用CreateProcess崩溃:处未处理的异常: 0xC0000005: 写入位置 0x00415652 时发生访问冲突
问题代码
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;}