WindowsXP(x32)のプログラムをWindows7(x64)で動作させたんですが、アプリからOS標準のペイント(mspaint.exe)を起動する処理で失敗することが分かりました。
毎回起動に失敗するわけではなく2回に1回くらいmspaint.exeの画面が表示されません。
ここで調査して分かったことは、
・mspaint.exeはx32モードで起動されている。
・mspaint.exeのプロセスは起動しているがメインウィンドウを開けてない。
x32のmspaint.exeということはC:\windows\SysWOW64\mspaint.exeが実行ファイルです。
では、なぜx32のmspaint.exeなのか?
これは今回のアプリがx32なのでWOW64上で実行されるため、x32のアプリにはC:\windows\SysWOW64はC:\windows\System32\に見えるわけです。ややこしいですね。
ためしに、エクスプローラからC:\windows\SysWOW64のmspaint.exeを直接実行してみました。
意外にもエクスプローラから直接x32のmspaint.exeを起動しても失敗しました。
つまり、そもそもx32のmspaint.exeに問題があるということでした。
x64の環境でx32を実行できる機能は素晴らしいのですが、やはり過信はダメなようですね。