我試圖在Windows 7下的新環境下編譯Windows XP中的遺留代碼。它編譯但在運行時失敗。在Windows 7下的CreateProcess失敗
的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當我運行計算,鈣會彈出。我可以在命令提示符中的任何位置執行命令行中的任何命令,以便告訴我%PATH%到c:\ windows \ system32是已知的並且正常工作。
我試圖用ANSI字符串強制CreateProcessA,但我得到了相同的結果。我也嘗試在調試和發佈配置和從命令行。
有什麼想法?
編輯: calc.exe和tftp.exe都位於系統路徑中的c:\ windows \ system32中。
運行「c:\ windows \ system32 \ tftp」不起作用
tftp是由應用程序路徑而不是系統路徑找到的?這可能解釋爲什麼找到calc,但tftp不是。 CreateProcess不使用應用程序路徑。我假設你在某處設置了StartInfo.cb。 –
這一切都很有希望。當然tftp.exe不在您的程序的默認工作目錄中。 Calc.exe不是問題,它在PATH上。傳遞.exe的* full *路徑名,例如c:\ foo \ bar \ tfpt.exe。 –
我從來沒有聽說過StartInfo.cb – Eric