我希望从x86 process / exe调用x64 exe,例如:
是否可以从x86 cmd执行x64记事本?
我的问题是我正在执行的进程必须以x64运行,我不希望它作为x86(WoW)工作,因为它的行为不同......这就是它的编程方式,我无法改变它:-( 我的exe是x86 ......
简化我的问题: WoW进程可以创建/ fork / etc纯x64进程吗?
非常感谢YB
答案 0 :(得分:3)
是的,它可以。在启动记事本之前,您需要关闭WOW64重定向才能获得正确的可执行文件。
编辑:现在你已经澄清它实际上不是Notepad而是你自己的64位可执行文件,这段代码应该将它作为一个真正的64位进程启动:
STARTUPINFO si;
PROCESS_INFORMATION pi;
bool_t bResult = FALSE;
ZeroMemory(&pi, sizeof(pi));
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;
bResult = CreateProcess(NULL, "foo.exe", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
if (bResult)
{
WaitForSingleObject(pi.hThread, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}