2

たとえば、x86 プロセス/exe から x64 exe を呼び出したいとします。

  1. x86 コマンドを開く: %windir%\SysWoW64\cmd.exe
  2. start notepad: notepad.exe <- x86 メモ帳になります (taskmanager = * によると)

x86 cmd から x64 メモ帳を実行することは可能ですか?

私の問題は、実行しているプロセスを x64 として実行する必要があることです。動作が異なるため、x86 (WoW) として動作させたくありません... これがプログラムされた方法であり、変更できません :-(私のexeはx86です...

私の質問を簡単にするために: WoW プロセスは純粋な x64 プロセスを作成/フォーク/etc できますか?

どうもありがとう

YB

4

1 に答える 1

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);
}
于 2010-06-14T15:14:55.093 に答える