2009-06-02 14 views
0

私はNotepad.exeを実行するためにCreateProcessを使用していますが、メモ帳のプロセス親は自分のAPです。自分のAPを閉じたとき、メモ帳の親プロセスがエクスプローラになりました。この新しい開かれたプロセスのプロセス親としてエクスプローラを配置するにはどうしたらよいですか?プロセスのプロセス親プロセスをexplorer.exeに変更する

答えて

0

親プロセスとしてすぐにexplorer.exeを設定する方法はありません。しかし、私はあなたがこれを達成するためにいくつかの呼び出しを行うためにp/invokeを使うことができることを伝えることができます。

p/invokeを使用して別のユーザーとして起動する実装については、an articleです。これにより、p/invokeプロセスの紹介が得られます。次に、子プロセス以外のプロセスを起動する方法について説明しているan articleがあります。 2つの情報を組み合わせて、目的の目標を達成することができます。

3

この質問は意味がありません。 Windowsは、他のOSのようにプロセス間に実際の親子関係を持っていません。ちなみに、起動プロセスに関するいくつかの形成は維持されますが、親プロセスからハンドルと環境を複製するCreateProcess起動コードの外では、プロセス間に特別な関係はありません。彼らは完全に独立して、仲間として運営されています。

一部のタスクマネージャは、親子関係が維持されていることを暗黙の関係で示していますが、最終的にはプロセス作成情報のリストをスキャンして、他のプロセスが作成者を意味する一致を見つけることができます。

3

(実行中の場合)CreateRemoteThread()を使用してexplorer.exeのアドレススペース内に新しいスレッドを作成し、そのスレッドでメモ帳を起動してみてください。

+1

CreateRemoteThreadは、あなたの顧客やユーザーに悪いことが起こるのを確実にする方法です。それは、非常に難しいです。 –

+0

2 Paul:リモートスレッドを作成するのが正解です。コードインジェクション(フックなど)の技術は、この種の質問に対する正しい返答となります。正解を責めたり、「間違った」、「ハッキー」の問題 – Andrey

関連する問題