4


0

開始されたすべての新しいプロセスのウィンドウからイベントを取得する方法はありますか?

オペレーティングシステムによって新しいプロセスが開始されるたびに通知を受け取りたい。 +ネイティブコードでそれを行う必要があることに注意してください(System.Managementメンバーを使用してマネージコードで実行できることはわかっています)。 +プロセスが実行を開始する前に取得する方法がある場合の追加ポイント:)(つまり、初期化中)

ありがとう。

3 Answer


2


ドライバーの使用に関する問題は、ドライバーをインストールするための許可が必要になることですが、そうでない場合は最も安全な方法だと思います。

ユーザースペースでは、そのようなアプリケーションがウィンドウを使用する場合に機能するウィンドウフックを作成することができますが、それ以外の場合は非常に不快です。

一方、http://msdn.microsoft.com/en-us/library/aa394582%28VS.85%29.aspx [WMI]を使用することもできます。これは、C#で使用されている基盤技術です。 this anwersおよびこのhttp://msdn.microsoft.com/en-us/libraryでポインターを検索できます。 /aa393013%28VS.85%29.aspx [例]。


0


ユーザー空間からプロセスの作成を制御したり、コールバックを登録したりすることはできません。 この記事が役立つかもしれません。 http://www.codeproject.com/KB/system/soviet_protector.aspx [「ネイティブAPIをフックし、システム全体でプロセス作成を制御する」]

コールバックを登録するだけで、MS DDKで利用可能なPsSetCreateProcessNotifyRoutineを使用できます。 使用例はwww.codeproject.com/KB/threads/procmon.aspxにあります。


0


リアルタイムETWトレースは、システムオーバーヘッドが低い状態でこの情報を提供します。 これにより、プロセスを_hook_作成できないことに注意してください(つまり、 通知のみであり、プロセスが実際に開始されるかどうかを制御することはできません)