Может ли процесс WoW64 создать /fork/etc чистый процесс x64?

Я хочу вызвать x64 exe из x86 process/exe, например:

  1. откройте x86 cmd: %windir%\SysWoW64\cmd.exe
  2. запустить блокнот: notepad.exe <- это будет блокнот x86 (согласно taskmanager = *)

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

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

Чтобы упростить мой вопрос: может ли процесс WoW создать процесс /fork/etc pure x64?

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

Ю.Б.

1 ответ

Да, оно может. Перед запуском блокнота вам нужно отключить перенаправление 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);
}
Другие вопросы по тегам