que estoy tratando de compilar el código heredado de Windows XP en un nuevo contexto en Windows 7. Se compila pero no en tiempo de ejecución.CreateProcess falla en Windows 7
CreateProcess() devuelve 0 y GetLastError() devuelve 2, lo que significa ERROR_FILE_NOT_FOUND
Aquí está mi llamada a 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
ya por las rarezas: Cuando en lugar de TFTP corro calc, calc aparece. Puedo ejecutar lo que esté en mi línea de comando desde cualquier lugar en un símbolo del sistema, así que me dice que el% PATH% to c: \ windows \ system32 es conocido y funciona correctamente.
traté de forzar CreateProcessA con cadenas ANSI pero me dio el mismo resultado. También probé en la configuración de depuración y liberación y desde la línea de comandos.
¿Alguna idea?
EDIT: Tanto calc.exe como tftp.exe se encuentran en c: \ windows \ system32 que se encuentra en la ruta del sistema.
ejecutando "c: \ windows \ system32 \ tftp" no funciona
Está TFTP ser encontrado por una ruta de la aplicación en lugar de la ruta del sistema? Eso podría explicar por qué se encuentra calc pero tftp no lo es. CreateProcess no utiliza las rutas de la aplicación. Supongo que está configurando StartInfo.cb en algún lugar. –
Hay muy pocas esperanzas de que esto funcione. Seguramente tftp.exe no se encuentra en el directorio de trabajo predeterminado de su programa. Calc.exe no es un problema, está en la RUTA. Pase la ruta * completa * de .exe, como c: \ foo \ bar \ tfpt.exe. –
Nunca oí hablar de StartInfo.cb – Eric