Windowsでファイルを開いているプロセス (PID) を特定する方法
こんにちは。
今回は、開いてもいないのに何かのプロセスが掴んでいてファイルが削除できないなどのケースで、プロセスを特定する方法を紹介します。
「再起動したら直るんじゃない?」という解決案は今回においてはなしです(笑)
準備
以下のURLよりProcess Explorer ツールをダウンロードします。 https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx
ダウンロードしたファイルを解凍します。 初回起動時のみ、承諾画面が出るのでAgreeを選択します。
解凍したフォルダから、procexp.exeを管理者として実行します。
特定方法
今回はわかりやすく、Excelファイルを開いている状態で実施してみます。よって、目標は明らかでこのファイルを使っているプロセスであるExcelのPIDを特定することです。
以下の画像は、開いている状態で削除しようとしたときのエラー画面です。
- procexp.exeを開いた状態から、ツール上部の [Find] - [Find Handle or DLL]をクリックし、[Handle or DLL substring:] 欄にスナップショットファイルのフルパスを入力しSearchをクリックします。
- Searchが完了すると指定したファイルを使っているプロセスが特定されます。
PIDが15240と特定ができました。
- タスクマネージャーの詳細からPIDを検索し、確認します。
ここまでの確認から、ファイルを開いているプロセスはExcel.exeであることが確認できました。
今回のテストであれば、Searchの結果からExcelが利用していることは明らかですが、プロセスを特定してからの対処についてはケースによると思いますので状況に応じて追加の調査・対処を実施いただければと思います。
あとがき
調査の概要としては、
- ツールを作ってエラーが起きたファイルをつかんでいるPIDを調査
- 1.で判明したPIDをタスクマネージャで調べてプロセスを確認する
- 2.の状況をもとにどうするか判断する
という流れになります。
状況に応じては、3. 以降でさらなる調査が必要になる可能性はありますが、とりあえずの調査として覚えておいて損はないと思います。
ご覧いただきありがとうございました。 次回の記事でお会いしましょう。