簡體   English   中英

CreateProcess 在 windows 下失敗 7

[英]CreateProcess fails under windows 7

我正在嘗試在 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”不起作用

問題是您有一個 32 位應用程序試圖執行 64 位 Windows 命令。 您不必將應用程序重新編譯為 64 位即可解決問題。 您所要做的就是將所有出現的 c:\windows\system32 更改為 c:\windows\SysNative。

在 Windows 7 x64 中,對 c:\windows\system32 的引用從 32 位程序自動重定向到 Z4A8A08F09D37B73795649038408B5F343Z: 使用特殊別名 c:\windows\SysNative 會導致 Windows 7 不執行重定向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM