Local System ユーザーとして実行するサービスを作成しました。このサービスは、ネイティブ相互運用機能と CreateProcessAsUser() メソッド (ローカル システムではなく、現在ログインしているユーザーとしてアプリケーションを実行するため) を使用して、Silverlight Out-of-browser アプリケーションを起動および監視します。生成されたプロセスのハンドルを取得し、それを Kill() することはできますが、サービスが子アプリケーションのメイン ウィンドウへのハンドルを取得できないことに気付きました。別のユーザーとして実行しています。私はWindows 7で実行しています。
私の最終的な目標は、プロセスが応答を停止したとき (つまり、Process.Responding == false) に適切に応答して、アプリケーションを強制終了して再起動できるようにすることです。ただし、Process.Responding にはプロセスのメイン ウィンドウへのハンドル (正確には Process.MainWindowHandle) が必要ですが、このシナリオでは、Process.MainWindowHandle は常に 0 を返します。
私はここで困惑しています。Win 7 で、あるユーザーが別のユーザーとして実行されているプロセスへのウィンドウ ハンドルを取得する方法はありますか?
あらゆる助けを前もって感謝します。