Я пытаюсь скомпилировать устаревший код из Windows XP в новой среде Windows 7. Он компилируется, но не работает во время выполнения.
CreateProcess () возвращает 0, а GetLastError () возвращает 2, что означает ERROR_FILE_NOT_FOUND
Вот мой вызов CreateProcess
STARTUPINFO StartInfo;
memset(&StartInfo, 0, sizeof(StartInfo));
wcsncpy(astrCommandLine, L"TFTP", MAX_OSCOMMANDLINE_SZ-1);
BOOL bFuncRetn = CreateProcess(NULL,
astrCommandLine, // command line
NULL, // process security attributes
NULL, // primary thread security attributes
NULL, // handles are inherited
0, // creation flags
NULL, // use parent's environment
NULL, // use parent's current directory
&StartInfo, // STARTUPINFO pointer
&m_ProcInfo ); // receives PROCESS_INFORMATION
Теперь о странностях: когда вместо tftp я запускаю calc, появляется calc. Я могу выполнить все, что находится в моей командной строке из любого места в командной строке, поэтому он сообщает мне, что% PATH% до c: \ windows \ system32 известен и работает правильно.
Я пытался принудительно запустить CreateProcessA с помощью строк ansi, но я получил тот же результат. Я также пробовал настраивать отладку и выпуск и из командной строки.
Есть идеи?
РЕДАКТИРОВАТЬ:
как calc.exe, так и tftp.exe находятся в каталоге c: \ windows \ system32, который находится в системном пути.
запуск "c: \ windows \ system32 \ tftp" не работает