私が気になっている特定のプロセスがあります。これは、コマンドプロンプトまたはタスクマネージャーを介して強制終了した後、約1分で継続的に起動されます。
現在、バッチファイルを15秒ごとにループさせ、存在する場合は強制終了する方法を採用しています。しかし、私はそれを起動しているものを止めることができるほうがはるかに望ましいです。
Windows 7がプロセスの起動方法を追跡する方法はありますか?
PPID(親プロセスID)と呼ばれるものがありますが、これはタスクマネージャーに表示される列ではなく、Process Explorerの列にも表示されないため、Windowsで見つけるのは比較的「トリッキー」です。
これを行う2つの方法
Method 1 - WMIC
Method 2 - Process Monitor
これらは両方ともかなり迅速な方法です
ここから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を生成した親プロセスです
Sysinternalsプロセスモニターで実行できます。
メニューバーのfilter..filterをクリックし、プロセスの名前、パス、またはPIDをフィルタリングするフィルターを追加します。プロセス名calc.exeまたはパスのフィルター。c:\ windows\system32\calc.exeと入力します。
たまたまプロセス名を使った
まだキャプチャしていない場合は、OK ..とfile..captureを実行します。
正しいプロセスをダブルクリックして、この場合は画像calc.exeをロードし、プロパティダイアログが表示されたら、正しいタブ「プロセス」をクリックすると、PIDとPPID(親プロセスID)が表示されます。
そしてもちろん、今のようにPPIDを知っている場合は、タスクマネージャーでPPIDを検索して、どのプロセスがPPIDを生成したかを知ることができます
これがバックグラウンドで実行されていたプロセスである場合、おそらく Process Explorer
または wmic
Barlop
またはRobert Koritnik
。プロセスが一時的で、起動/終了が非常に速く、必要なクリックやキーストロークを実行するのに十分な時間が残っていない場合は、nixdaで概説されているように、プロセスモニターを使用します。
私はこのパーティーに少し遅れていますが、完了のために:
これに代わる別の方法(何らかの理由でProcess Monitorを使用したくない場合)は、組み込みのプロセス追跡を使用することです。これは次のようにして有効にすることができます:
コントロールパネル->管理ツール->ローカルセキュリティポリシー->ローカルポリシー->監査ポリシー管理ツールがコントロールパネルに別の方法で存在しない場合ローカルセキュリティポリシーを開くには、[開始]ボタンをクリックして、secpol.mscと入力します。
Audit Process Trackingを含むいくつかの監査オプションが表示されます。 Successのカテゴリに対してこれをオンにします。
Event Viewer-> Windows Logs-> Securityに、「プロセス作成」のイベント(イベントID 4688)と名前が表示されます。 /作成中のプロセスのパス、および作成者プロセスIDというフィールド。これには、このプロセスを作成したプロセスのPIDの16進表記が含まれています(これは、Programmerビューでcalc.exeを使用して簡単に変換できます)。
そのPID(その「作成者プロセス」のPID、つまりPPID)は、タスクマネージャー、またはtasklist/svcのような出力で探すことができます。
プロセスが存在しない場合は、作成時から、他のPIDのID4688を持つ他のイベントを探すことができます。