WoW64进程可以创建/ fork / etc纯x64进程吗?

时间:2010-06-14 15:13:41

标签: x86 64-bit createprocess wow64

我希望从x86 process / exe调用x64 exe,例如:

  1. open x86 cmd:%windir%\ SysWoW64 \ cmd.exe
  2. 启动记事本:notepad.exe< - 它将是x86记事本(根据taskmanager = *)
  3. 是否可以从x86 cmd执行x64记事本?

    我的问题是我正在执行的进程必须以x64运行,我不希望它作为x86(WoW)工作,因为它的行为不同......这就是它的编程方式,我无法改变它:-( 我的exe是x86 ......

    简化我的问题: WoW进程可以创建/ fork / etc纯x64进程吗?

    非常感谢

    YB

1 个答案:

答案 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);
}