特定のDLLを利用しているプロセスを探す

DLLを消そうとしているときに使用中です、などと言われても困ってしまいます。効率よく探したくても、そのPCにProcess Explorerが入っているなんて幸運もそうないわけです。

ここは組み込みのコマンドでの消し方を覚えておくとよいでしょう。

具体的にはtasklisttaskkillを使います。

タスクマネージャのコンソール版ですが、本家にない強力なフィルタ機能が存在します。

※ 動作はXP以上を確認していますが、2000のリソースキットにも入っていた気がします。


使ったことない人はまずは単純にtasklistと打ってみてください。プロセスの一覧がでます。

次にフィルタを適用します。DLLを表すフィルタ名はMODULESであり、eqは等しいの意味です。詳しくはヘルプを参照してください。

つまり、DLLNAME.DLLを探すときには以下のようにします。

> tasklist /fi "MODULES eq DLLNAME.DLL"

ここでプロセスIDが出ますので、それを使っても良いですが、プロセスを殺す専用コマンドであるtaskkillに任せます。実はおなじフィルタが使えますので

> taskkill /fi "MODULES eq DLLNAME.DLL"

これで問題ないです。実はプロセスを殺すだけならtaskkill単体で良いのですが、問答無用に殺したいなんて時はそうそうないわけです。

余談になりますが、このtasklistというコマンド、svchostが何をホストしているか調べる/SVCスイッチや、このコマンドを打つときだけ権限を昇格できる/USER /PASSWORDなんかあったりして重宝してます。

みなさんも是非使ってみてください。

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz