Может ли процесс WoW64 создать /fork/etc чистый процесс x64?
Я хочу вызвать x64 exe из x86 process/exe, например:
- откройте x86 cmd: %windir%\SysWoW64\cmd.exe
- запустить блокнот: 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);
}