Компилю стандартный пример из PSDK в VC++2005, и при вызове CreateProcess вываливается необрабатываемое исключение с ошибкой доступа (Unhandled exception at 0x7c82f1d3 in Processes.exe: 0xC0000005: Access violation writing location 0x00415642.), походу ошибка при обращении к куче создаваемого процесса хотя хз. PS в VC++ 6.0 все компилится без проблем и при дальнейшем переносе проекта в 2005 тоже
Знакомые грабли - параметр командная строка для функции CreateProcess должна иметь тип LPTSTR - т.е. должна быть доступной на запись. VC6.0 использует по умолчанию ANSI варианты функций и вызывает CreateProcessA, которая соответсвенно выделяет внутренний буфер под строковые параметры конвертирует их с помощью MultiByteToWideChar и вызывает CreateProcessW. Внутренний буфер доступен на запись, поэтому проблемы не возникает. VC2005 по умолчанию использует UNICODE варианты функций, поэтому TEXT("Cmd") передаётся напрямую CreateProcessW которая и падает, т.к. буфер read-only. Соответсвенно правильнее будет писать так: Код (Text): TCHAR lpCmdLine[]=TEXT("Cmd"); CreateProcess(NULL, lpCmdLine,....)
Так и есть, надо лучше глядеть просто в MSDN The Unicode version of this function, CreateProcessW, will fail if this parameter is a const string Спасибо за ответы всем, отдельно roman_pro