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

问题描述:

我想打电话到x86进程/ EXE X64的exe文件,例如:WoW64进程是否可以创建/ fork/etc纯x64进程?

  1. 开放的x86 CMD中:%windir%\ SYSWOW64 \ cmd.exe的
  2. 启动记事本:NOTEPAD.EXE < - 它会是x86记事本(根据taskmanager = *)

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

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

为了简化我的问题:? 可以在魔兽过程中创建/叉/等纯x64的过程

千恩万谢

YB

是的,它可以。在你启动记事本之前您需要关闭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); 
} 
+0

我有正确的可执行文件(只有1 ),我用记事本来说明问题。 不会关闭WOW重定向效果只有注册表和某些(不相关的)路径? – 2010-06-14 15:31:49

+0

好吧,记事本是一个大红鲱鱼,因为在64位系统中有两个记事本可执行文件位于不同的位置(一个32位和一个64位),因此您需要关闭文件系统重定向才能获得32位一。 鉴于您只有一个可执行文件并且它是64位可执行文件,因此您应该可以启动它。我将编辑我的答案来展示一个例子。 – Vicky 2010-06-14 16:01:57