Eri*_*ric 6 c++ windows createprocess
我正在尝试在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
Run Code Online (Sandbox Code Playgroud)
现在为了奇怪:当我运行calc而不是tftp时,calc会弹出.我可以从命令提示符中的任何位置执行命令行中的任何内容,因此它告诉我%PATH%到c:\ windows\system32已知且工作正常.
我试图用ansi字符串强制CreateProcessA,但我得到了相同的结果.我也尝试过调试和发布配置以及命令行.
任何的想法?
编辑:calc.exe和tftp.exe都位于系统路径中的c:\ windows\system32中.
运行"c:\ windows\system32\tftp"不起作用
小智 9
问题是你有一个32位应用程序试图执行64位Windows命令.您不必将应用程序重新编译为64位来解决问题.您所要做的就是将所有出现的c:\ windows\system32更改为c:\ windows\SysNative.
在Windows 7 x64中,32位程序对c:\ windows\system32的引用会自动重定向到c:\ windows\syswow64.使用特殊别名c:\ windows\SysNative会导致Windows 7不执行重定向.
| 归档时间: |
|
| 查看次数: |
9388 次 |
| 最近记录: |