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
奇妙なことに、tftp の代わりに calc を実行すると、calc がポップアップします。コマンド プロンプトのどこからでもコマンド ラインにあるものを実行できるので、c:\windows\system32 への %PATH% が認識され、正しく動作することがわかります。
ansi 文字列で CreateProcessA を強制しようとしましたが、同じ結果が得られました。また、デバッグおよびリリース構成とコマンドラインからも試しました。
何か案が?
編集: calc.exe と tftp.exe の両方が、システム パスにある c:\windows\system32 にあります。
「c:\windows\system32\tftp」を実行しても機能しません