繁体   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