web-dev-qa-db-ja.com

どのプログラムが特定のプロセスを開始するかを追跡しますか?

私が気になっている特定のプロセスがあります。これは、コマンドプロンプトまたはタスクマネージャーを介して強制終了した後、約1分で継続的に起動されます。

現在、バッチファイルを15秒ごとにループさせ、存在する場合は強制終了する方法を採用しています。しかし、私はそれを起動しているものを止めることができるほうがはるかに望ましいです。

Windows 7がプロセスの起動方法を追跡する方法はありますか?

7
user398246

PPID(親プロセスID)と呼ばれるものがありますが、これはタスクマネージャーに表示される列ではなく、Process Explorerの列にも表示されないため、Windowsで見つけるのは比較的「トリッキー」です。

これを行う2つの方法

Method 1 - WMIC
Method 2 - Process Monitor

これらは両方ともかなり迅速な方法です

方法1-WMIC

ここからWMICを使用してPPIDを見つける方法の回答を使用します https://stackoverflow.com/questions/7486717/finding-parent-process-id-on-windows

これで残りの部分はかなり簡単になります

C:\blah>wmic process get processid,parentprocessid
ParentProcessId  ProcessId
0                0
0                4
4                320
392              572
320              656
648              664
392              688
688              740
688              756
688              764
...              ...

残りはかなり明白です。

それで、誰がcalc.exeを起動したかを見つけたいとしましょう。

タスクマネージャーから表示されるcalc.exeはPID7384です

C:\blah>wmic process get processid,parentprocessid | find "7384"
10896            7384

PPID             PID


C:\crp>

WMICは、PIDとPPIDの間の関連付けを示します。次に、タスクマネージャーで10896を検索します(10896はcalc.exeのPID 7384に対してリストされているPPIDです)。タスクマネージャーでは、PIDが10896のプロセスはcmd.exeであり、これはcalcの起動に使用したプロセスであることがわかります。 exeそして確かにcmd.exeはcalc.exeを生成した親プロセスです

方法2-プロセスモニター

Sysinternalsプロセスモニターで実行できます。

メニューバーのfilter..filterをクリックし、プロセスの名前、パス、またはPIDをフィルタリングするフィルターを追加します。プロセス名calc.exeまたはパスのフィルター。c:\ windows\system32\calc.exeと入力します。

たまたまプロセス名を使った

enter image description here

まだキャプチャしていない場合は、OK ..とfile..captureを実行します。

正しいプロセスをダブルクリックして、この場合は画像calc.exeをロードし、プロパティダイアログが表示されたら、正しいタブ「プロセス」をクリックすると、PIDとPPID(親プロセスID)が表示されます。

enter image description here

そしてもちろん、今のようにPPIDを知っている場合は、タスクマネージャーでPPIDを検索して、どのプロセスがPPIDを生成したかを知ることができます

9
barlop

これがバックグラウンドで実行されていたプロセスである場合、おそらく Process Explorer または wmicBarlopまたはRobert Koritnik。プロセスが一時的で、起動/終了が非常に速く、必要なクリックやキーストロークを実行するのに十分な時間が残っていない場合は、nixdaで概説されているように、プロセスモニターを使用します。

私はこのパーティーに少し遅れていますが、完了のために:

これに代わる別の方法(何らかの理由でProcess Monitorを使用したくない場合)は、組み込みのプロセス追跡を使用することです。これは次のようにして有効にすることができます:

コントロールパネル->管理ツール->ローカルセキュリティポリシー->ローカルポリシー->監査ポリシー管理ツールがコントロールパネルに別の方法で存在しない場合ローカルセキュリティポリシーを開くには、[開始]ボタンをクリックして、secpol.mscと入力します。

Audit Process Trackingを含むいくつかの監査オプションが表示されます。 Successのカテゴリに対してこれをオンにします。

enter image description here

Event Viewer-> Windows Logs-> Securityに、「プロセス作成」のイベント(イベントID 4688)と名前が表示されます。 /作成中のプロセスのパス、および作成者プロセスIDというフィールド。これには、このプロセスを作成したプロセスのPIDの16進表記が含まれています(これは、Programmerビューでcalc.exeを使用して簡単に変換できます)。

enter image description here

そのPID(その「作成者プロセス」のPID、つまりPPID)は、タスクマネージャー、またはtasklist/svcのような出力で探すことができます。
プロセスが存在しない場合は、作成時から、他のPIDのID4688を持つ他のイベントを探すことができます。

3
Adam Thompson