2010-06-14 2 views
2

Я хотел бы назвать x64 ех от процесса x86/EXE, например:Может ли процесс WoW64 создать/fork/etc чистый x64 процесс?

  1. открытых x86 CMD:% WINDIR% \ SysWoW64 \ cmd.exe
  2. начала блокнот: notepad.exe < - это будет быть x86 блокнот (согласно taskmanager = *)

Возможно ли выполнить блокнот x64 с x86 cmd?

Моя проблема заключается в том, что процесс, который я выполняю, должен выполняться как x64, я не хочу, чтобы он работал как x86 (WoW), поскольку он действует по-другому ... вот как он был запрограммирован, и я не могу изменить это :-( и мой ехе это x86 ...

Чтобы упростить мой вопрос: может сделать WoW процесс создания/вилки и т.д. чистый процесс/x64

большое спасибо

YB

ответ

3

Да, это возможно. Перед тем, как запустить блокнот вам нужно будет отключить перенаправление WOW64, чтобы запустить правильный исполняемый файл.

Edit: Теперь вы уточнить, что это на самом деле не 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); 
} 
+0

У меня есть правильный исполняемый файл (есть только 1), Я использовал блокнот, чтобы проиллюстрировать проблему. Не отключил бы перенаправление WOW только реестр и определенные (нерелевантные) пути? –

+0

ОК, блокнот - большая красная селедка, потому что в 64-разрядной системе есть два исполняемых файла блокнота (один 32-разрядный и один 64-разрядный), поэтому вам нужно будет отключить перенаправление файловой системы, чтобы получить путь к 32 бит один. Учитывая, что у вас есть только один исполняемый файл, и это 64-разрядный исполняемый файл, вы должны просто запустить его. Я отредактирую свой ответ, чтобы показать пример. – Vicky

Смежные вопросы