TerminateProcessはうまくいきました。
# ShellExecuteのハンドルでは駄目でしたが…

もうひとつの方はこんな流れでいいのでしょうか。
1. CreateProcessでプロセスを生成(hProcessを取得)
2. hProcessの持つウィンドウを検索(hWndを取得)
3. hWndに対してSendMessage(WM_ENDSESSION or WM_CLOSE)する
4. WaitForSingleObject(hProcess)で終了待ち。

それで2.はどうすればいいのでしょうか。
ウィンドウのキャプションで検索するのは不確実ですよね。