CreateProcess方法最终出错

我的以下代码有问题:

int main(int argc, char **argv) { PROCESS_INFORMATION pi; STARTUPINFO si; printf("Process %d reporting for duty\n",GetCurrentProcessId()); GetStartupInfo(&si); CreateProcess(NULL,"notepad.exe", NULL,NULL,FALSE,DETACHED_PROCESS, NULL,NULL, &si, &pi); printf("New Process ID: %d\n",pi.dwProcessId); return(0); } 

并且在运行时,我在调试时运行它并且它在CreateProcess方法上崩溃,并显示以下错误消息: “Tests.exe中0x7c82f29c处的未处理exception:0xC0000005:访问冲突写入位置0x00415760。” 这是什么意思???

32位可执行文件总是具有0x00400000的基址。 无法写入的地址,根据exception是0x00415760 。 这意味着您的代码几乎肯定会尝试写入可执行映像的只读部分。 例如,当您尝试写入字符串文字时会发生这种情况。

现在, CreateProcess的第二个参数必须是可修改的内存(它被声明为LPTSTR )。 但是你传递的是字符串文字。 将"notepad.exe"放在可修改的缓冲区中以解决您的问题。

 char CommandLine[] = "notepad.exe"; CreateProcess(NULL, CommandLine, ...