2

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

  1. 打开 x86 cmd:%windir%\SysWoW64\cmd.exe
  2. 启动记事本:notepad.exe <- 它将是 x86 记事本(根据 taskmanager = *)

是否可以从 x86 cmd 执行 x64 记事本?

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

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

非常感谢

YB

4

1 回答 1

3

是的,它可以。在启动记事本之前,您需要关闭 WOW64 重定向才能获得正确的可执行文件以启动。

编辑:现在您已经澄清它实际上不是记事本,而是您自己的 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);
}
于 2010-06-14T15:14:55.093 回答