Метод 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, с этим сообщением об ошибке: «Необработанное исключение в 0x7c82f29c в Tests.exe: 0xC0000005: место записи нарушения доступа 0x00415760». Что это значит???

32-разрядные исполняемые файлы неизменно имеют базовый адрес 0x00400000 . Адрес, который не может быть записан, в соответствии с исключением составляет 0x00415760 . Это означает, что ваш код почти наверняка пытается записать в часть только для чтения исполняемого изображения. Это происходит, например, когда вы пытаетесь написать строковые литералы.

Теперь второй параметр CreateProcess должен быть модифицируемой памятью (он объявлен как LPTSTR ). Но вы передаете строковый литерал. Поместите "notepad.exe" в модифицируемый буфер, чтобы решить вашу проблему.

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