2010-06-14 68 views
2

我想打電話到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

回答

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); 
} 
+0

我有正確的可執行文件(只有1 ),我用記事本來說明問題。 不會關閉WOW重定向效果只有註冊表和某些(不相關的)路徑? – 2010-06-14 15:31:49

+0

好吧,記事本是一個大紅鯡魚,因爲在64位系統中有兩個記事本可執行文件位於不同的位置(一個32位和一個64位),因此您需要關閉文件系統重定向才能獲得32位一。 鑑於您只有一個可執行文件並且它是64位可執行文件,因此您應該可以啓動它。我將編輯我的答案來展示一個例子。 – Vicky 2010-06-14 16:01:57