我正在尝试在 Windows 7 的新环境下从 Windows XP 编译遗留代码。它编译但在运行时失败。
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
现在奇怪的是:当我运行 calc 而不是 tftp 时,会弹出 calc。我可以在命令提示符的任何位置执行我的命令行上的任何内容,因此它告诉我到 c:\windows\system32 的 %PATH% 是已知的并且可以正常工作。
我试图用 ansi 字符串强制 CreateProcessA,但我得到了相同的结果。我还尝试了调试和发布配置以及命令行。
任何想法?
编辑: calc.exe 和 tftp.exe 都位于系统路径中的 c:\windows\system32 中。
运行“c:\windows\system32\tftp”不起作用