Windows 10や11で、ファイルやフォルダーを削除しようとしたとき「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。」と表示されて削除できないことがあります。
このメッセージが表示されるのは、該当のファイルやフォルダーを何らかのプロセスが使用していることが原因であることがほとんどで、たいていの場合は、ファイルやフォルダーを使用しているプロセスを終了させることで削除できるようになりますが、どのプロセスが使用しているのかわからない場合があります。
そのような場合、Windowsを再起動するのが手っ取り早い方法ですが、再起動せずに該当のプロセスのみを終了させて削除したいときもあります。
そこでここでは「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。」と表示されて削除できないフォルダーやファイルを、再起動せずに削除する方法を3つ紹介します。
目次
リソースモニターを使った方法
一つ目の方法は、リソースモニターを使って削除できないフォルダーやファイルを使用しているプロセスを終了させる方法です。
まず「タスクマネージャー」を起動して「パフォーマンス」タブの下部にある「リソース モニターを開く」をクリックします。
「リソースモニター」が開いたら「CPU」タブを開き「関連付けられたハンドル」の検索ボックスに削除できないフォルダーやファイルの名前を入力します。
すると、検索結果にその削除できないフォルダーまたはファイルを使用しているプロセスが表示されるので、右クリックし「プロセスの終了」をクリックします。
次のような警告画面が表示されるので「プロセスの終了」をクリックします。
以上で、フォルダーやファイルを使用しているプロセスがなくなり、削除できるようになっているはずです。
File Locksmithを使った方法
二つ目の方法は、Windowsを使いやすくカスタマイズできるMicrosoft製ツール「PowerToys」に含まれる「File Locksmith」機能を使って、削除できないフォルダーやファイルを使用しているプロセスを終了させる方法です。
「File Locksmith」は、別のプログラムがフォルダーやファイルを開いている(ロックしている)ために、フォルダーやファイルを削除できないときに、フォルダーやファイルをロックしているプロセスを調べたり、プロセルを終了させることができます。
PowerToysのインストール方法などは、以下の記事をご覧ください。
File Locksmithの使い方は簡単で、削除できないフォルダーやファイルを右クリックして、メニューから「このファイルを使用するプロセスを表示」を選択します。
すると、フォルダーやファイルをロックしているプロセスが一覧表示されるので、該当のプロセス欄の「タスクを終了する」をクリックすることでプロセスを終了させることができます。
また、プロセス一覧画面右上の「盾」アイコンをクリックすれば、管理者権限で動作しているプロセスも表示させることができます。
以上で、フォルダーやファイルを使用しているプロセスがなくなり、削除できるようになっているはずです。
openfilesコマンドを使った方法
三つ目の方法は、Windowsに標準搭載されているopenfilesコマンドを使って、使用中のフォルダーやファイルを強制的に閉じる方法です。
openfilesコマンドは、削除や移動ができないファイルやフォルダーが、どのアプリ(プロセス)やユーザーによって使用されているかを調査したり、使用中のフォルダーやファイルを強制的に閉じることできます。
事前準備
openfilesコマンドを利用するには、事前準備が必要です。
まず、管理者権限でコマンドプロンプトを起動してopenfilesコマンドを実行すると、次のようなメッセージが表示されます。
表示されているメッセージにあるように、openfilesコマンドを利用して使用中のファイルやフォルダーの情報を取得するには、システムグローバルフラグ「maintain objects list」をオンにする必要があります。
「maintain objects list」をオンにするには「openfiles /local on」と実行し、表示されるメッセージに従ってWindows 10を再起動します。
なお「maintain objects list」をオンにすると、システムのパフォーマンスが低下する可能性があるので、パフォーマンスへの影響を抑えたい場合は、必要なときだけオンにして、必要がなくなったら「openfiles /local off」と実行し「maintain objects list」をオフにしておきましょう。
使用中のファイルを確認する
上の事前準備ができたら、改めて管理者権限でコマンドプロンプトを起動して、openfilesコマンドを実行すると、現在ローカルマシン上で使用中のファイルやフォルダーの一覧と、リモートから開かれているファイルやフォルダーの一覧が表示されます。
一覧には、ファイルやフォルダーを識別するための番号やどのプロセスがどのファイルやフォルダーを使用していかが表示されます。
なお「開いているファイル」欄の表示は、一部が「..」と表示され省略されていますが、省略せずに表示したい場合は「openfiles /query /v」と実行すれば、省略せずに表示できます。
使用中のファイルを強制的に閉じる
使用中のファイルやフォルダーを強制的に終了させるときは「openfiles /disconnect」を実行します。下の例では識別番号「ID」が「64」のファイルを強制的に閉じています。
上の例では、識別番号で閉じていますが、それ以外にもユーザー名やファイル名などを指定して閉じることもできます。
あとがき
いずれの方法も、終了させるプロセスによっては、Windowsの動作に影響を及ぼす場合があるので、その点を理解した上で実行する必要があります。