WoW64进程是否可以创建/ fork/etc纯x64进程?
问题描述:
我想打电话到x86进程/ EXE X64的exe文件,例如:WoW64进程是否可以创建/ fork/etc纯x64进程?
- 开放的x86 CMD中:%windir%\ SYSWOW64 \ cmd.exe的
- 启动记事本: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);
}
我有正确的可执行文件(只有1 ),我用记事本来说明问题。 不会关闭WOW重定向效果只有注册表和某些(不相关的)路径? – 2010-06-14 15:31:49
好吧,记事本是一个大红鲱鱼,因为在64位系统中有两个记事本可执行文件位于不同的位置(一个32位和一个64位),因此您需要关闭文件系统重定向才能获得32位一。 鉴于您只有一个可执行文件并且它是64位可执行文件,因此您应该可以启动它。我将编辑我的答案来展示一个例子。 – Vicky 2010-06-14 16:01:57